2012-06-22 154 views
4

我提供了一个“与Twitter登录”链接/auth/twitter,其中omniauth宝石处理。Omniauth,Twitter的401未经授权

在我的开发机器上,这似乎工作正常,重定向到twitter登录页面并返回dev.twitter.com上应用程序的回调集(http://127.0.0.1:3000/auth/twitter /回电话)。

我对我们的测试生产服务器注册一个单独的应用程序,唯一的东西是不同的访问令牌,密,和回调。访问对生产服务器的结果/auth/twitter路径

OAuth::Unauthorized (401 Unauthorized): 
    oauth (0.4.6) lib/oauth/consumer.rb:216:in `token_request' 
    oauth (0.4.6) lib/oauth/consumer.rb:136:in `get_request_token' 
    ... 

我已确认该服务器确实是使用我开发的关键/秘密通过打印使用的日志的人,因为他们在/config/initializers/omniauth.rb被设置。它们与Twitter页面上给出的匹配,并且注册的回调是有效地址并指向生产服务器。

怎么可能是错在这里?这可能是速率限制的结果吗?

的Gemfile如下:

source 'https://rubygems.org' 

gem 'rails', '3.2.3' 

gem 'mysql2','0.3.11' 

gem 'tweetstream' 
gem 'koala' 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'twitter-bootstrap-rails' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

gem 'twitter' 
gem 'omniauth-twitter' 
gem 'omniauth-facebook' 
gem 'thin' 

/config/initializers/omniauth.rb:

puts "initializing twitter with #{TWITTER_KEY}, #{TWITTER_SECRET}" 
Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, TWITTER_KEY, TWITTER_SECRET 
    provider :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, 
     :scope => 'read_stream,publish_stream' 
end 

服务器日志放在这里的第一行正确的密钥和秘密。

+0

你有不同的环境的Twitter密钥/秘密吗? –

+0

是的。我用Twitter注册了他们两个,一个接一个,但所有选项都是相同的,除了回调地址。 – bdares

回答

2

在我的情况下,问题是,服务器时间为50分钟左右后面,被请求被拒绝,因为时间戳太旧。

更新系统时间固定它。

+0

男人我希望那是我的问题! ?具有相同的401,但我的系统时间是好的,我已经回调正确设置dev.twitter.com :( –

+0

@AndrewGertig你解决你的问题,我有相同的问题,以及:/ – Frexuz

+0

@Frexuz我害怕这么长时间,我不记得解决方案是什么,对不起! –

1

不要忘记检查复选框在twitter上设置:

“允许此应用程序可用于登录与Twitter”

希望这可以帮助别人

0

我的解决办法你需要在Twitter.com应用程序管理部分指定一个回调URL。 https://apps.twitter.com/这将让本地主机网址也可以正常工作。

0

我的问题是,我测试过“回调网址锁定”。只是在它工作时取消了检查。

相关问题