Devise / OmniAuth / Twitter - OAuth ::未经授权(401)

时间:2012-08-02 22:39:04

标签: twitter devise omniauth

我正在尝试使用Devise / OmniAuth设置Twitter登录,遵循最新的RailsCast。我已经注册了Twitter开发者应用程序,使用的回调网址为:myiphere:port/users/auth/twitter

我已经跟踪了RailsCast上的T,但每次点击Sign In With Twitter链接时,我都会立即获得OAuth::Unauthorized 401 Unauthorized on the myiphere:port/users/auth/twitter page

我认为我已使用export TWITTER_CONSUMER_KEY=MYKEYINSERTEDHERE export TWITTWR_CONSUMER_SECRET=MYSECRETINSERTEDHERE rails server正确定义了密钥。我已经尝试了大多数我能在互联网上找到的解决方案,但都无济于事。几乎所有的答案都是为了在登录后返回他们的网站,我无法访问任何类型的Twitter屏幕,只是/users/auth/twitter页面上的401错误。

5 个答案:

答案 0 :(得分:17)

我有同样的问题;在我的情况下,我已正确设置API密钥,但未在{设置}选项卡下https://dev.twitter.com/apps/的Twitter设置中设置回调URL。

奇怪的是,回调网址似乎不需要指向任何有用的地方; Twitter显然只是将其存在作为某种信号。

omniauth-twitter提供的调试信息还有待改进。

答案 1 :(得分:2)

我通过从初始化程序DEVISE.RB中删除括号和ENV来实现它:

config.omniauth :twitter, "APP_ID", "APP_SECRET"

我在DEV Twitter设置中指定的回调:

http://www.mysite.com/users/auth/twitter/callback

在routes.rb

devise_for :users, controllers: {omniauth_callbacks: "omniauth_callbacks"}

我的登录链接:

<%= link_to "Log in with Twitter", user_omniauth_authorize_path(:twitter) %>

答案 2 :(得分:1)

在这里回答我自己的问题,似乎我只需要添加实际的密钥来代替TWITTER_CONSUMER_KEYTWITTER_CONSUMER_SECRET,而不是我最初尝试添加它们的方式。我也从每一个中删除了ENV[],我认为这可能有所帮助。

答案 3 :(得分:0)

您需要添加figaro gem才能使用视频中的环境变量。该链接将指导您如何设置它们。

http://railsapps.github.io/rails-environment-variables.html

答案 4 :(得分:0)

对我来说,问题是“未允许此应用程序用于使用Twitter登录”(在应用程序页面&gt;设置选项卡下)