0

我正在尝试在 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?

4

2 回答 2

5

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

于 2013-01-08T10:39:11.397 回答
1

Omniauth Twitter 适用于本地 Rails 开发环境。检查事项:

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

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

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

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

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

于 2013-01-08T13:45:26.720 回答