在Rails 3.2中使用OmniAuth-Twitter需要OAuth :: Unauthorized 401授权

时间:2014-09-17 01:12:28

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

我已经在StackOverFlow中实现了几种不同的策略,但到目前为止,似乎都没有影响抛出的错误:

OAuth::Unauthorized 401 Authorization Required

我正在关注Ryan Bates' RC #241,并点击了我的网站点击"使用Twitter登录"我得到了错误。我继续将响应路由添加到此处列出的routes.rb文件中:

routes.rb

match 'auth/twitter/callback', to: 'user#update'

认为错误可能是由回调函数引起的。同样的错误。查看我的dev.log即可显示:

Started GET "/auth/twitter" for 127.0.0.1 at 2014-09-16 18:52:08 -0600
(twitter) Request phase initiated.

OAuth::Unauthorized (401 Authorization Required):
oauth (0.4.7) lib/oauth/consumer.rb:216:in `token_request'
oauth (0.4.7) lib/oauth/consumer.rb:136:in `get_request_token'
omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:29:in `request_phase'
omniauth-twitter (1.0.1) lib/omniauth/strategies/twitter.rb:60:in `request_phase'
omniauth (1.2.2) lib/omniauth/strategy.rb:215:in `request_call'
omniauth (1.2.2) lib/omniauth/strategy.rb:183:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
...
script/rails:6:in `require'
script/rails:6:in `<top (required)>'
-e:1:in `load'
-e:1:in `<main>'

所以我知道问题在于Twitter的认证问题。必须是KEY和SECRET,对吧?

现在,我已将KEY和SECRET作为ENV []变量放入environment/development.rb文件的直接字符串中,取出&#34; ENV []&#34;变量等,根据堆栈上的建议。

My KEY和SECRET现在位于here...

所讨论的自定义配置中

config/initializers/social_media.rb:

TWITTER_CONFIG = YAML.load_file("#{::Rails.root}/config/twitter.yml")[::Rails.env]

config/initializers/omniauth.rb文件:

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, TWITTER_CONFIG['app_id'], TWITTER_CONFIG['secret']
end   

关于ActionController: Exception caught OAuth::Unauthorized - 401 Authorization Required的任何想法?这可能是Noob错误,但我的Google-Fu现在只是Google-F&#39;

2 个答案:

答案 0 :(得分:55)

经过一夜撕裂我的头发之后,我开始查看Twitter developer console上的回调网址。

省去一些麻烦,别忘了设置它。它并没有直接在RailsCast中提及,尽管Ryan确实简单地通过了它。

设置回调网址时,不要只放//localhost:3000它不起作用。而是使用:

http://127.0.0.1:3000/

答案 1 :(得分:0)

我在使用 omniauth-twitterdevise gems 处理 Rails 6 应用程序时遇到了同样的问题

我已将 API KeyAPI Secret Key 添加到我的 Rails 6 应用程序中,但是当我尝试测试 Twitter 身份验证时,我遇到了以下错误:< /p>

OAuth::Unauthorized 401 Authorization Required

我是这样解决的

我将以下回调 URL 添加到我的 Twitter 开发者帐户:

http://localhost:3000/auth/twitter
http://localhost:3000/auth/twitter/callback
http://localhost:3000/users/auth/twitter
http://localhost:3000/users/auth/twitter/callback

注意:将 localhost:3000 替换为您的实际 host。此外,用于回调 URL 的路由应与您的应用程序中设置的路由相匹配。

资源How to Sign in with Twitter using Devise, Omniauth, and Ruby on Rails

仅此而已。

我希望这会有所帮助