Instagram.get_access_token返回BadRequest

时间:2013-10-01 18:28:25

标签: ruby-on-rails ruby authentication oauth instagram

我正在尝试使用Instagram gem验证用户身份。所以我有一个由Instagram返回code param的页面,我只需要通过POST请求发送回来。根据gem文档,我需要做类似的事情:

get "/oauth/callback" do
  response = Instagram.get_access_token(params[:code], :redirect_uri => CALLBACK_URL)
  session[:access_token] = response.access_token
  redirect "/feed"
end

所以我有

  def authenticate
    response = Instagram.get_access_token(params[:code], :redirect_uri => "http://127.0.0.1:3000")
    session[:access_token] = response.access_token
    redirect "/feed"
  end

我正在接受

Completed 500 Internal Server Error in 957ms

Instagram::BadRequest (POST https://api.instagram.com/oauth/access_token/: 400):
  app/controllers/instagram_controller.rb:25:in `authenticate'

我尝试根据Instagram api文档制作curl请求,并且它使用相同的参数。

关于client_id,我将这些密钥存储在初始化程序中的instagram.rb中,所以它看起来像

require "instagram"

Instagram.configure do |config|
  config.client_id = "123345"
  config.client_secret = "123123"
end

CALLBACK_URL = "http://127.0.0.1:3000"

提前多多感谢。

1 个答案:

答案 0 :(得分:2)

发现问题。所以,我也在我的应用程序中设计,并且我没有在config.omniauth中放置“redirect_url”。人们在这里讨论https://github.com/Instagram/instagram-ruby-gem/issues/22完全相同的事情。 谢谢你的帮助。