我正在尝试在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?
答案 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开发工具)。这应该有助于追踪您的问题。