15

最近几天我一直在尝试使用twitter-omniauthgem 对用户进行身份验证,但没有成功。(使用 facebook 进行身份验证非常有效)

我不断收到 401 Unauthorized 错误。

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

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

在我在推特中输入的回调网址下方

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

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

4

6 回答 6

17

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

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

于 2011-12-13T22:50:03.067 回答
13

我很确定当它来自本地主机时我遇到了这个问题......

这篇文章说他们允许这样做,但如果我没记错的话,我必须使用外部可访问的 URL。当我测试我的 oauth 东西时,我使用了 DynDns 并在我的路由器中打开了一个端口。

于 2011-12-11T00:07:12.717 回答
2

In my case I used "Access Token" and secret instead of "Consumer Key" caused this error.

于 2012-07-24T03:40:21.933 回答
1

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

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

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

于 2014-07-04T09:34:50.090 回答
1

我遇到了这个问题,因为我将密钥放在 ~/.bash_profile 中的环境中,但我从未找到它。一旦我打开一个新终端,它就可以正常工作。

于 2014-02-22T00:29:23.833 回答
1

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

于 2013-04-16T03:50:10.797 回答