我是Ruby on Rails的新手,并且一直在尝试使用Instagram API创建一个Web应用程序来学习。
我想要实现的是
我在Github上的Instagram gem中显示了示例代码。 以下是我到目前为止所编码的内容:
配置/初始化/ instagram.rb
require "instagram"
Instagram.configure do |config|
config.client_id = "Hidden"
config.client_secret = "for"
config.access_token = "security reason"
end
应用/控制器/ auth_controller.rb
class AuthController < ApplicationController
def index
end
def oauth
# Redirect to Instagram's auth page
redirect_to Instagram.authorize_url( redirect_uri: 'http://localhost:3000/result/index')
end
def callback
response = Instagram.get_access_token(params[:code], redirect_uri: 'http://localhost:3000/result/index')
# Save access_token in Cookie
session[:access_token] = response.access_token
# Save user name in Cookie
session[:username] = Instagram.client( access_token: session[:access_token]).user.username
session[:user_id] = Instagram.client( access_token: session[:access_token]).user.id
# Redirect to photo list page
redirect_to controller: "result", action: "index"
end
end
应用/控制器/ result_controller.rb
class ResultController < ApplicationController
def index
@client = Instagram.client(:access_token => session[:access_token])
@recent = @client.user_recent_media
end
end
当我访问localhost:3000 / auth / oauth时,会出现Instagram的授权请求页面。点击&#34;授权&#34;它使用参数&#34重定向到localhost:3000 / result / index;?code =&#34;加上一些随机字母并返回错误说明
Instagram :: BadRequest in ResultController #index GET https://api.instagram.com/v1/users/self/media/recent.json?client_id=&#34; XXXXXXXXXXXXXX&#34 ;: 400:&#39; self&#39;关键字需要经过身份验证的用户
我已经坚持这个问题了几天...... 此外,我想显示用户的基本信息,例如用户的用户名,user_id,bio和profile pic。如何在视图和控制器中编码以显示此类信息?
非常感谢您的帮助!
答案 0 :(得分:0)
看起来您还没有完成OAuth流程。
在初始化程序中保留access_token,此标记对于使用Instagram登录/授权您的应用程序的用户来说是唯一的。
redirect_uri应该是你的回调uri:
http://localhost:3000/auth/callback
这是临时代码与access_token的交换。它不应该是结果/索引。 redirect_uri还必须与Instagram Developer页面上为您的OAuth应用程序输入的内容相匹配。
http://instagram.com/developer/clients/manage/
其他一切似乎都是正确的。我建议访问Instagram Ruby Gem github页面,那里有一些很棒的信息。