我正在开发一个使用设计和omniauth的Rails 3应用程序,并按照https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview中给出的示例进行操作,它适用于Facebook帐户,但当我尝试添加Twitter身份验证时,我得到了一个'401 Unauthorized '回应。为了跟踪问题,我将api.twitter.com的URL切换为http并转储网络流量,看起来它是两次POST到/ oauth / access_token。我第一次得到200响应,第二次得到401.在它之间使用'GET /1/account/verify_credentials.json'方法成功获取经过身份验证的用户的用户信息。我不明白为什么代码第二次调用access_token方法。
在我的config / initializers / devise.rb文件中,我添加了:
config.omniauth :twitter, "consumer_key", "consumer_secret"
除了上面的Omniauth概述页面中列出的其余代码外。
我还在我的OmniauthCallbacksController中添加了一个'twitter'方法,但由于401,它永远不会被调用。
非常感谢任何帮助。
答案 0 :(得分:7)
尝试在dev.twitter.com上的应用程序设置中填写回调URL。应该是这样的:
答案 1 :(得分:3)
不确定你最终是否认识到这一点 - 但Twitter不支持localhost
个域名。
您可以通过在/etc/hosts
中设置本地别名然后在Twitter上的回调网址中输入,或者将您的网站放在面向外部的服务器上来解决此问题。
如上所述 - 回调应采用以下格式:
答案 2 :(得分:2)
你在使用omniauth-twitter gem吗?
问题可能是因为回调网址。
在开发模式下,您可以将回调网址设为
答案 3 :(得分:0)
我遇到同样的问题,因为启用:确认 我决定跳过oauth用户的确认:auth.user.skip_confirmation! 它解决了我的问题。
答案 4 :(得分:0)
我遇到了完全相同的问题,但最终通过删除config/initializers/omniauth.rb
文件来实现此功能。它会在请求中加倍,因为您在config/initializers/devise.rb