2011-12-06 62 views
15

我一直在尝试使用twitter-omniauth gem来验证用户的最后日子,但没有成功。 (与Facebook的身份验证完美)OAuth :: Unauthorized 401 int twitter-omniauth gem

我一直得到401未经授权的错误。

我通过stackoverflow搜索,但没有答案可以解决我的问题。

当我尝试http://127.0.0.1/users/auth/twitter时,我到达twitter登录。我登录后,我被重定向到http://127.0.0.1/users/auth/twitter/callback,并发生未经授权的错误。

下面回调URL我已经在Twitter上

http://127.0.0.1/users/auth/twitter/callback

rake routes输出

new_user_session GET /users/sign_in(.:format)    {:action=>"new", :controller=>"devise/sessions"} 
       user_session POST /users/sign_in(.:format)    {:action=>"create", :controller=>"devise/sessions"} 
     destroy_user_session DELETE /users/sign_out(.:format)    {:action=>"destroy", :controller=>"devise/sessions"} 
     user_omniauth_callback  /users/auth/:action/callback(.:format) {:action=>/twitter|facebook/, :controller=>"users/omniauth_callbacks"} 
       user_password POST /users/password(.:format)    {:action=>"create", :controller=>"devise/passwords"} 
      new_user_password GET /users/password/new(.:format)   {:action=>"new", :controller=>"devise/passwords"} 
      edit_user_password GET /users/password/edit(.:format)   {:action=>"edit", :controller=>"devise/passwords"} 
          PUT /users/password(.:format)    {:action=>"update", :controller=>"devise/passwords"} 
    cancel_user_registration GET /users/cancel(.:format)    {:action=>"cancel", :controller=>"devise/registrations"} 
      user_registration POST /users(.:format)      {:action=>"create", :controller=>"devise/registrations"} 
     new_user_registration GET /users/sign_up(.:format)    {:action=>"new", :controller=>"devise/registrations"} 
     edit_user_registration GET /users/edit(.:format)     {:action=>"edit", :controller=>"devise/registrations"} 
          PUT /users(.:format)      {:action=>"update", :controller=>"devise/registrations"} 
          DELETE /users(.:format)      {:action=>"destroy", :controller=>"devise/registrations"} 
         login  /login(.:format)      {:action=>"login", :controller=>"home"} 
         root  /         {:controller=>"home", :action=>"index"} 

如果你需要再进入的信息,我会提供。请帮我解决这个问题。

+0

罗伯特 - 你有没有在你的初始化程序中检查你的应用程序ID和应用程序密码是否正确?它们是否与Twitter显示的本地应用程序相匹配? – TallGreenTree

+0

另外,你可以发布你的用户/ omniauth_callbacks控制器的代码吗? – TallGreenTree

+0

@TallGreenTree我有双倍检​​查appication id和应用程序的秘密很多次..它是相同的... – robert

回答

13

我敢肯定,我遇到了问题,这个时候它是来自本机的...

This article说,他们允许,但如果没记错的话,我不得不使用一个外部访问的URL。当我测试我的oauth东西时,我使用DynDns并在我的路由器中打开了一个端口。

+5

如果您使用的是本地主机。它适用于如果您使用URL缩短器。 – Benjamin

+0

是的 - 我用ngrok,它的工作就像一个魅力。谢谢ejlevin1 –

17

我今天有这个问题,发现我必须在我的应用程序下的dev.twitter.com设置中设置一个回调URL。因此,请检查您是否设置了回拨URL设置,我将其设置为预期的制作地址,并在本地以开发模式运行时重定向。

它在回调url输入框中提到,如果留空,它将限制应用程序使用回调URL。

+1

我在问题中提到过,我已经给出了回调url ... – robert

+1

我有这个相同的问题,并提供回调url修复它。我认为你需要让域名与应用注册的域名相同。所以对于网站:我有http://www.example.com和回调网址:http://www.example.com/auth/twitter/callback因此,Kalvir说不要使用http://127.0.0.1作为基本网址,当您注册您的应用程序时,请使用您在网站字段中输入的内容。 – wuliwong

2

在我的情况下,我使用“访问令牌”和秘密,而不是“消费者密钥”导致此错误。

+0

当使用twitter-omniauth时,您应该使用访问令牌,而不是“使用者密钥” – wspruijt

1

在我的情况下,我们使用的是Timecop gem,它导致omniauth-twitter gem失败,因为与本地服务器时间的冲突由timecop设置。

1

我遇到了这个问题,因为我把我的密钥放在我的环境中〜/ .bash_profile,但我从来没有找到它。一旦我打开一个新的终端,它工作得很好。

1

显然,Twitter在“应用程序设置”选项卡上添加了一个复选框。

在“应用程序详细信息”窗格的底部,您必须选中“允许此应用程序用于使用Twitter登录”复选框。

经过检查并等待几分钟后,警报框告诉我一切都开始工作。

相关问题