2014-03-04 78 views
0

当我的Twitter应用进行回调时,出现错误OAuth::Unauthorized/401 UnauthorizedOmniauth,Twitter:OAuth :: Unauthorized/401未经授权,从Twitter回拨

  • 我使用:

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

    • 一个bit.ly网址指向:http://127.0.0.1:3000
    • 或者:直接网址: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

  • 我的初始化/ omn​​iauth.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'

回答

0

我终于找到了问题:

该块被定义2X我的应用程序里面:

Rails.application.config.middleware.use OmniAuth::Builder do 

    provider :twitter, 'e93Q89eW4o...DNMe9w3i8tqQ', 'owERioaRjj...jrKdotiiOeIUdd89irlA' 

end 

确保你设置这只是1倍!

(如果您有复印过的配置文件从以前项目的习惯,你可能会结束了重复。)

0

我也面临着同样的错误。然而,我的解决方案是不同的,因为我只在应用程序中声明了该块。

我遵循github的FAQ:intridea/omniauth,并通过使系统时钟正确来解决我的问题。一旦我改变到正确的时间,我可以成功地使用twitter omniauth登录。

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

相关问题