未经授权的401进入twitter-omniauth gem



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

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

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

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

下面是我在twitter上输入的回调url

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"}
如果你需要更多的信息,我可以提供。请帮我解决这个问题

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

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

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

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

在我的情况下,我使用"Access Token"和secret而不是"Consumer Key"导致此错误。

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

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

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

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

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

最新更新