【发布时间】:2014-11-10 21:53:11
【问题描述】:
我已经实现了 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吧?
现在,根据 Stack 各处的建议,我已将 KEY 和 SECRET 作为 ENV[] 变量、environment/development.rb 文件的直接字符串、取出“ENV[]”变量等。
我的 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'ed...
【问题讨论】:
标签: ruby-on-rails-3 twitter omniauth