我正在提供/auth/twitter
的“使用twitter登录”链接,omniauth
gem处理这些链接。
在我的开发机器上,这似乎工作正常,重定向到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 :(得分:2)
在我的情况下,问题是服务器时间落后大约50分钟,并且因为时间戳太旧而拒绝了请求。
更新系统时间修复了它。
答案 1 :(得分:1)
不要忘记检查Twitter设置中的复选框:
“允许此应用程序用于使用Twitter登录”
希望这有助于某人
答案 2 :(得分:0)
我的解决方案是你需要在Twitter.com应用程序管理部分指定一个回调网址。 https://apps.twitter.com/这样也可以让localhost网址正常工作。
答案 3 :(得分:0)
我的问题是我检查了“Callback Url locking”。只是取消了它的工作。