2013-01-08 91 views
0

我想在rails应用程序中使用omniauth-twitter,但我一开始就卡住了,无法弄清楚原因是什么。 我确实在dev.twitter.com注册了我的应用程序,并且我得到了CONSUMER_KEY和CONSUMER_SECRET。 为了缩短测试时间,我直接就把这两个变量在初始化/ omniauth.rb401未授权使用omniauth-twitter

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

在application.html.erb布局我有

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

链接到Twitter的迹象,但,当我点击登录,而不是重定向到Twitter的登录我得到

401 Unauthorized 

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

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

+0

出于安全考虑,您应该避免在API凭证中进行硬编码(尤其应避免将它们提交给版本控制)。 – Brandon

回答

5

您是否在注册应用时将Callback URL加入了应用?如果Callback URL丢失,那么这是您遇到的第一个问题。

+0

是的,我将回调URL字段留空,因为我没有仔细阅读网页中的评论,并且我应用了“如果您还没有URL,只需在此放置一个占位符,但请记住稍后再更改它“。到回调网址字段。我的错误,非常感谢。 – kranz

1

Omniauth Twitter适用于当地轨道开发环境。检查事项:

您的路线设置正确的回调,是这样的:

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

还要注意在你的link_to的路径有可能丢失的斜线。尝试更改为:

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

我在执行Omniauth的Twitter(这应该是别人一样),它并不需要你登录或确认画面,如果你已经登录到Twitter上。它会将您重定向回您在dev.twitter.com中指定的网址。因此,请检查您的应用,看看它是否正在通过Twitter进行身份验证(使用Firebug或Chrome开发工具)。这应该有助于追踪你的问题。