设计,Omniauth和Twitter

我正在开发一个使用devise和omniauth的Rails 3应用程序,并按照https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview中给出的示例进行操作,它适用于Facebook帐户,但是当我尝试添加Twitter auth,我收到了’401 Unauthorized’回复。 为了跟踪问题,我将api.twitter.com的URL切换为http并转储网络流量,看起来它是两次POST到/ oauth / access_token。 我第一次得到200响应,第二次得到401.在它之间使用’GET /1/account/verify_credentials.json’方法成功获取经过身份validation的用户的用户信息。 我不明白为什么代码第二次调用access_token方法。

在我的config / initializers / devise.rb文件中,我添加了:

config.omniauth :twitter, "consumer_key", "consumer_secret" 

除了上面的Omniauth概述页面中列出的其余代码。

我还在我的OmniauthCallbacksController中添加了一个’twitter’方法,但由于401,它永远不会被调用。

任何帮助将非常感激。

尝试在dev.twitter.com上的应用程序设置中填写回调URL。 应该是这样的:

回调URL http://yousite.com/auth/twitter/callback

不确定你是否最终想到这一点 – 但Twitter不支持localhost域。

您可以通过在/etc/hosts设置本地别名然后在Twitter上的回调URL中输入它或将您的站点放在面向外部的服务器上来解决此问题。

如上所述 – 回调应采用以下格式:

HTTP:// mysite的/认证/叽叽喳喳/回调

你在使用omniauth-twitter gem吗?

问题可能是因为回调url。

在开发模式下,你可以回调url as

http://127.0.0.1:3000/auth/twitter/callback

我遇到了同样的问题,因为启用:确认我决定跳过oauth用户的确认:auth.user.skip_confirmation! 它解决了我的问题。

我遇到了完全相同的问题,但最终通过删除config/initializers/omniauth.rb文件使其工作。 它会在请求中加倍,因为您在config/initializers/devise.rb