【问题标题】:Devise, Omniauth and Twitter设计、Omniauth 和 Twitter
【发布时间】:2011-08-17 01:17:34
【问题描述】:

我正在开发一个使用 devise 和omniauth 并遵循https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview 中给出的示例的Rails 3 应用程序,它适用于Facebook 帐户,但是当我尝试添加Twitter auth 时,我得到一个“401 Unauthorized”响应.为了追踪问题,我将 api.twitter.com 的 URL 切换为 http 并转储网络流量,看起来它正在向 /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,它永远不会被调用。

任何帮助将不胜感激。

【问题讨论】:

  • 您是否在 OmniauthCallbacksController 中检查了您的 twitter 功能?如果有错误,devise 将抛出无效响应错误,您可以尝试在控制器中通过 render :text => env["omniauth.auth"] 转储响应

标签: ruby devise twitter-oauth omniauth


【解决方案1】:

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

回调网址http://yousite.com/auth/twitter/callback

【讨论】:

    【解决方案2】:

    不确定您是否最终解决了这个问题 - 但 Twitter 不支持 localhost 域。

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

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

    http://mysite/auth/twitter/callback

    【讨论】:

    【解决方案3】:

    你在使用omniauth-twitter gem吗?

    问题可能是由于回调 URL。

    在开发模式下,您可以将回调 url 设置为

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我遇到了完全相同的问题,但最终通过删除 config/initializers/omniauth.rb 文件来解决这个问题。由于您在 config/initializers/devise.rb

        中设置了它,因此请求加倍

        【讨论】:

          猜你喜欢
          • 2014-08-14
          • 2013-09-30
          • 2013-09-04
          • 2012-03-11
          • 1970-01-01
          • 2016-11-11
          • 1970-01-01
          • 2014-10-18
          • 1970-01-01
          相关资源
          最近更新 更多