OAuth :: Unauthorized 401 int twitter-omniauth gem

时间:2011-12-06 16:05:49

标签: ruby-on-rails-3 twitter-oauth twitter-gem

我一直在尝试使用twitter-omniauth gem验证用户最近几天,但没有成功。 (与facebook的身份验证完美无缺)

我一直在收到401 Unauthorized错误。

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

当我尝试http://127.0.0.1/users/auth/twitter时,我会通过Twitter登录。我登录并且我被重定向到http://127.0.0.1/users/auth/twitter/callback并且未经授权的错误来了。

我在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"}

如果您需要更多信息,我会提供。请帮我解决这个问题。

6 个答案:

答案 0 :(得分:17)

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

它在回调网址输入框中提到如果留空则会限制应用使用回调网址。

答案 1 :(得分:13)

我很确定当它来自localhost时我遇到了这个问题...

This article说他们允许,但如果内存正确地为我服务,我必须使用外部可访问的URL。当我测试我的oauth时,我使用了DynDns并在我的路由器中打开了一个端口。

答案 2 :(得分:2)

就我而言,我使用过" Access Token"和秘密而不是消费者密钥"造成了这个错误。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我遇到了这个问题,因为我已将我的密钥放在〜/ .bash_profile的环境中,但我从未采购过它。一旦我打开一个新的终端,它工作正常。

答案 5 :(得分:1)

显然Twitter在App Settings选项卡上添加了一个复选框。

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

检查后等待几分钟,因为警报框告诉我一切都开始工作了。