所以我试图制作一个应用程序,我希望允许用户使用他们的Instagram帐户登录。这是一个Rails应用程序。除了我使用Instagram API而不是Twitter API之外,我主要关注Railscast 241。我没有使用设计。
我安装了gem' omniauth-instagram'我在其中一个初始化程序中有以下内容 -
Rails.application.config.middleware.use OmniAuth::Builder do
provider :developer unless Rails.env.production?
provider :instagram, ENV['MY_CLIENT_ID'], ENV['MY_CLIENT_SECRET']
end
问题在于,当我将用户引导至' auth / instagram'路径请求不包含我的客户端ID(我查看Chrome调试工具>网络以确保这一点)。结果,虽然它将用户带到登录页面,但随后它失败并给出以下响应 -
{"code": 400,
"error_type": "OAuthException",
"error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"}
因此,不要发出请求o' auth / instagram'路径我将用户引导到实际的自动化URL,即
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
一切按照计划进行。除了我在控制器方法中(在成功重定向到正确的URL之后)不能将用户信息作为request.env [' omniauth.auth']的一部分获取。 Infact request.env哈希没有omniauth.auth作为其密钥之一。对此的修复是我手动必须向API编写curl -F查询以获取用户信息。
但这听起来太多了,我觉得必定会有一些我可能做错的事情。为什么宝石没有用我提供的client_id发出正确的请求?为什么没有' omniauth.auth'得到适当填充作为参数的一部分?
一些相关资源 -