【发布时间】:2014-10-05 07:12:42
【问题描述】:
我是 Ruby on Rails 的新手,一直在尝试使用 Instagram API 创建一个 Web 应用程序来进行学习。
我想要实现的是
- 使用 Instagram API 进行身份验证
- 认证后返回用户基本信息
我使用 Github 上 Instagram gem 中显示的示例代码进行了编码。 以下是我目前编写的代码:
config/initializers/instagram.rb
require "instagram"
Instagram.configure do |config|
config.client_id = "Hidden"
config.client_secret = "for"
config.access_token = "security reason"
end
app/controllers/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
app/controllers/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 的授权请求页面。点击“授权”后,它会重定向到 localhost:3000/result/index,并带有参数“?code=”加上一些随机字母,并返回错误说明
ResultController#index GET 中的 Instagram::BadRequest https://api.instagram.com/v1/users/self/media/recent.json?client_id="xxxxxxxxxxxxxx": 400: 'self' 关键字需要经过身份验证的用户
我已经被这个问题困扰了几天...... 我还想显示用户的基本信息,例如用户的用户名、user_id、生物和个人资料图片。如何在视图和控制器中编码以显示此类信息?
非常感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails oauth instagram