设计,Omniauth和Twitter

问题描述:

我正在使用devise和omniauth的Rails 3应用程序,并遵循https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview中给出的示例,它在Facebook帐户中运行良好,但是当我尝试添加Twitter身份验证时,出现'401未经授权的回应。为了跟踪这个问题,我将api.twitter.com的URL切换为http,并抛弃了网络流量,它看起来像是发送到/ oauth/access_token两次。第一次获得200响应时,第二次给出401响应。在两者之间,它使用'GET /1/account/verify_credentials.json'方法成功获取经过身份验证的用户的用户信息。我不明白为什么代码第二次调用access_token方法。设计,Omniauth和Twitter

在我的配置/初始化/ devise.rb文件我加:

config.omniauth :twitter, "consumer_key", "consumer_secret" 
除了在上述Omniauth概述页面列出的代码的其余部分

我也在我的OmniauthCallbacksController加入了“叽叽喳喳”的方法,但它永远不会被调用,由于401

任何帮助将非常感激。

+0

设置了这个请求,你是否在OmniauthCallbacksController中检查了你的twitter函数?如果出现错误,devise会抛出无效的响应错误,您可以尝试在您的控制器 – Jimchao

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

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

+0

中仅通过'render:text => env [“omniauth.auth”]转储响应,只有'http:// yousite.com'仍适用于我。 –

不知道你到底想通了这一点或没有 - 但Twitter不支持localhost域。

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

如上 - 回调应该在格式:

http://mysite/auth/twitter/callback

+4

您也可以使用http://127.0.0.1:3000/auth/twitter/callback作为您在twitter端的回调网址。他们不允许“localhost”,但是允许127.0.0.1等效。 –

是否使用omniauth,叽叽喳喳的宝石?

问题可能是因为回调URL。

在开发模式下,你可以SE回调URL作为

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

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

我遇到了完全相同的问题,但最终通过删除config/initializers/omniauth.rb文件来完成此工作。由于你在config/initializers/devise.rb