ruby-on-rails-3 – OAuth ::未授权的401授权需要使用OmniAuth-Twitter在Rails 3.2

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

的OAuth ::未经授权
需要401授权

我正在追踪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 []变量,作为环境/ development.rb文件的直接字符串,取出“ENV []”变量等,按照Stack over Stack的建议.

我的KEY和SECRET现在位于自定义配置中,如here…所述

配置/初始化/ 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的想法:异常已被OAuth :: Unauthorized – 401授权?这可能是一个Noob错误,但我的Google-Fu现在只是Google-F’ed …

解决方法

经过一个晚上撕裂我的头发,我看了 Twitter developer console的回叫网址.

保存自己一些麻烦,不要忘了设置这个.在RailsCast中没有直接提及,虽然Ryan简单地通过了它.

当你设置回调URL时,不要只是把// localhost:3000它不起作用.而是使用:

http://127.0.0.1:3000/

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...