【问题标题】:Omniauth, Twitter: OAuth::Unauthorized / 401 Unauthorized upon callback from TwitterOmniauth,Twitter:OAuth::Unauthorized / 401 Unauthorized 在从 Twitter 回调时
【发布时间】:2014-04-06 11:13:56
【问题描述】:

当我的 Twitter 应用执行回调时,我收到错误 OAuth::Unauthorized / 401 Unauthorized

  • 我正在使用:

    gem 'omniauth'         # (1.2.1)
    gem 'omniauth-twitter' # (1.0.1)
    gem 'rails', '4.1.0.rc1'
    
  • 为 Twitter 应用提交的回调 URL(尝试了两种解决方案):

    • 一个 bit.ly URL 指向:http://127.0.0.1:3000
    • 或:直接 URL:http://127.0.0.1:3000
  • 调用的回调 URL 如下:

    http://127.0.0.1:3000/auth/twitter/callback?oauth_token=FcU...hYFk&oauth_verifier=Dge...oJ27E
    
  • routes.rb:

    get '/auth/:provider/callback', to: 'mycontroller#create'
    get '/auth/failure', to: redirect('/')
    
  • 我的机器时间没问题,如下所述:https://github.com/intridea/omniauth/wiki/FAQ

  • 我的初始化程序/omniauth.rb 看起来像这样:

    Rails.application.config.middleware.use OmniAuth::Builder do
      provider :twitter, 'e93Q89eW4o...DNMe9w3i8tqQ', 'owERioaRjj...jrKdotiiOeIUdd89irlA'
    end
    

我错过了什么?

编辑 - 一些痕迹: OAuth::Unauthorized (401 Unauthorized): oauth (0.4.7) lib/oauth/consumer.rb:216:in `token_request' oauth (0.4.7) lib/oauth/tokens/request_token.rb:18:in `get_access_token' omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:57:in `callback_phase' omniauth (1.2.1) lib/omniauth/strategy.rb:227:in `callback_call' omniauth (1.2.1) lib/omniauth/strategy.rb:184:in `call!' omniauth (1.2.1) lib/omniauth/strategy.rb:164:in `call' omniauth (1.2.1) lib/omniauth/builder.rb:59:in `call' warden (1.2.3) lib/warden/manager.rb:35:in `block in call' warden (1.2.3) lib/warden/manager.rb:34:in `catch' warden (1.2.3) lib/warden/manager.rb:34:in `call' rack (1.5.2) lib/rack/etag.rb:23:in `call' rack (1.5.2) lib/rack/conditionalget.rb:25:in `call' rack (1.5.2) lib/rack/head.rb:11:in `call' actionpack (4.1.0.rc1) lib/action_dispatch/middleware/params_parser.rb:27:in `call'

【问题讨论】:

    标签: ruby-on-rails twitter oauth omniauth


    【解决方案1】:

    我终于找到了问题:

    这个块在我的应用程序中定义了 2 倍:

    Rails.application.config.middleware.use OmniAuth::Builder do
    
      provider :twitter, 'e93Q89eW4o...DNMe9w3i8tqQ', 'owERioaRjj...jrKdotiiOeIUdd89irlA'
    
    end
    

    确保您只设置了 1x !

    (如果您有从以前的项目中复制配置文件的习惯,则可能会出现重复。)

    【讨论】:

      【解决方案2】:

      我也遇到了同样的错误。但是,我的解决方案有所不同,因为我只在我的应用程序中声明了一次该块。

      我按照 github 的常见问题解答:intridea/omniauth 并通过使系统时钟正确解决了我的问题。一旦我更改到正确的时间,我就可以成功使用 twitter omniauth 登录。

      希望它有助于回答这个问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 2013-04-05
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多