401未经授权使用omniauth-twitter

时间:2013-01-08 10:04:21

标签: ruby-on-rails omniauth twitter-oauth

我正在尝试在rails应用程序中使用omniauth-twitter,但我一开始就陷入困境,无法弄清楚原因是什么。 我确实在dev.twitter.com注册了我的应用程序,我得到了CONSUMER_KEY和CONSUMER_SECRET。 为了缩短测试时间,我将这两个变量直接放在initializers / omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, "an_alphanumeric_code", "some_other_alphanumeric_code"
end

在application.html.erb布局中,我有Twitter登录的链接

<%= link_to "Sign in with Twitter", "auth/twitter" %>

但是当我点击登录时,我没有被重定向到Twitter登录,而是

401 Unauthorized

我已经在SO上检查了其他问题,这不应该是计算机时间问题(我的rails服务器时间设置正确)。 我怀疑问题在于没有可用于测试的公共IP和服务器名称。

是否有人能够通过本地127.0.0.1:3000 rails服务器运行omniauth-twitter?

2 个答案:

答案 0 :(得分:5)

在注册应用时,您是否在应用中放置了Callback URL?如果缺少Callback URL,那么这是您将遇到的第一个问题。

答案 1 :(得分:1)

Omniauth Twitter适用于本地rails dev环境。要检查的事项:

您的路线已针对回调设置正确,例如:

match "/auth/:provider/callback" => "sessions#create"

另请注意link_to中路径中可能缺少的前导斜杠。尝试更改为:

<%= link_to "Sign in with Twitter", "/auth/twitter" %>

在我实施的Omniauth Twitter(应该与其他人相同)中,如果您已经登录Twitter,则不会将您带到登录或确认屏幕。它会将您重定向回您在dev.twitter.com中指定的URL。因此,请检查您的应用,看看它是否正在进行身份验证(使用Firebug或Chrome开发工具)。这应该有助于追踪您的问题。