具体的に どのようなソースコードをお使いかわからないのですが、access_token が、取得できないというのは、Instagram にリダイレクトされた後、callback の URL に戻ってきているのでしょうか?
gem 'instagram' ということなので、ruby の ライブラリと判断して、facebookarchive/instagram-ruby-gem のサンプルが、ほぼそのまま動きそうな感じだったので、 CALLBACK_URL / client_id / client_secret あたりを変更して、実行してみた感じでは、問題なく access_token が、取得できています。
Sandbox Mode で使えない機能はダメですが、自分の画像は表示できました。
(2017.12.08 20:50追記)
質問に記載されている URL のサンプルがうまく動かなかったので、修正しようかと思ったのですが、書き直す方が早そうだったので、最低限の確認できるだけの内容で書き直してます。
rails 5.0.1 で動作確認しました。
index で、@a_token を使っていますが、アクセストークンを確認のために view に表示したいだけなので、確認が済んだら消してOKです。
1.Rails プロジェクトを作成
2.Gemfile の最後にに以下を追加
3.Gemのインストール
bundle install --path vendor/bundle/
4.Instagram の client_id / client_secret を設定
config/initializers/instagram.rb
require "instagram"
Instagram.configure do |config|
config.client_id = "INSTAGRAM_CLIENT_ID"
config.client_secret = "INSTAGRAM_CLIENT_SECRET"
end
5.Home Controller を作成
rails g controller Home index
6.app/controllers/home_controller.rb を編集
class HomeController < ApplicationController
require "instagram"
# Callback URL (環境に合わせて変える)
CALLBACK_URL = "http://example.com:3000/auth/instagram/callback"
def index
if session.key? :access_token
@a_token = session[:access_token]
end
end
# トークン発行URLへのリダイレクト
def token
redirect_to Instagram.authorize_url(:redirect_uri => CALLBACK_URL)
end
# access_tokenを取得 (コールバック)
def get_token
response = Instagram.get_access_token(params[:code], :redirect_uri => CALLBACK_URL)
session[:access_token] = response.access_token
redirect_to "/"
end
# メディアの表示
def user_recent_media
client = Instagram.client(:access_token => session[:access_token])
@medias = client.user_recent_media
end
end
7.ビューの作成
app/views/home/index.html.erb
<p><%= link_to "instagramにサインイン", "/auth/instagram" %></p>
<p><%= link_to "User Recent Media", "/user_recent_media" %> - ユーザーのメディアを表示</p>
<% if @a_token.present? %>
<p>Instagram Access Token : <%= @a_token %> </p>
<% end %>
app/views/home/user_recent_media.html.erb
<p><%= link_to "Home", "/" %></p>
<% if @medias.present? %>
<% @medias.each do |media| %>
<%= link_to media.link, :target => "_blank" do %>
<%= image_tag(media.images.low_resolution.url) %>
<% end %>
<% end %>
<% end %>
8.ルート定義
config/routes.rb
Rails.application.routes.draw do
root 'home#index'
get "/auth/instagram" => "home#token"
get "/auth/instagram/callback" => "home#get_token"
get "/user_recent_media" => "home#user_recent_media"
end
9.サーバを実行
webブラウザで、RailsアプリのURL( http://example.com:3000/ )に接続すると 一番上に「instagramにサインイン」のリンクがあると思うので、クリックすると Instagram の画面になって、アプリへの許可画面になるので、許可をしてください。
callback に戻って、最下行に 取得できたアクセストークンが、「Instagram Access Token : xxxxxxxxx」と表示されると思います。
「User Recent Media」のリンクをクリックすると ユーザーの画像を表示できると思います。(エラーチェックとかしていないので、Instagram にサインインしていない状態で、User Recent Media をクリックするとエラー画面になります。)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/08 04:04
2017/12/08 04:07
2017/12/08 04:24