使用OmniAuth、Rails 3.1.0.rc2、mysql2、ruby 1.9.2.p0。
当重定向回我的网站时,我仍然会得到这个。
/auth/failure?message=invalid_response
Omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, 'XXXXX', 'XXXXXXXXXXXXX'
我检查了100x的钥匙,它们是正确的。仍在获取无效响应。我看到的任何问题似乎都不起作用。
如有任何帮助,我们将不胜感激!
谢谢。[:
如果需要任何新信息,只需询问即可。
如果您在控制器中使用此request.env['rack.auth']
,请将其更改为request.env['omniauth.auth']
-此处对OmniAuth 进行了解释
这个解决方案对我有效。
我也遇到了类似的问题。事实证明,我的Users:OmniauthCallbacksController#twitter方法:中确实存在一些运行时错误
我在nil对象上的一个不存在的方法上调用了一个方法,这引发了一个异常,但design或omniauth都接受了这个异常。
最后,我将整个方法体封装在begin/recue子句中,并打印出异常。
但是,如果您收到无效凭据,那么twitter颁发的oauth密钥可能已经过期,因此您的用户应该再次调用/users/auth/twitter。
你确定你没有把钥匙放错顺序吗?
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, TW_CONSUMER_KEY, TW_CONSUMER_SECRET
end
如果没有,让我们用Twitter宝石快速测试您的凭据:
# twitter.rb -- Test credentials
require "rubygems"
require "twitter"
# Get a user's most recent status update
puts Twitter.user_timeline("YOUR_USER").first.text
Twitter.configure do |config|
config.consumer_key = TW_CONSUMER_KEY
config.consumer_secret = TW_CONSUMER_SECRET
end
# Update your status
Twitter.update("I Love ruby!")
如果它有效,那么你的证书是好的。。。你应该继续研究Rails。。。
感谢Christian的回答。这对我很有帮助。但如果它在尝试更新、转发等时出现401错误,你就必须包括
config.oauth_token = 'MY_OAUTH_TOKEN'
config.oauth_token_secret = 'MY_OAUTH_TOKEN_SECRET'
到Twitter客户端配置。看看https://dev.twitter.com/discussions/1522
所以最后你会有
Twitter.configure do |config|
config.consumer_key = 'TW_CONSUMER_KEY'
config.consumer_secret = 'TW_CONSUMER_SECRET'
config.oauth_token = 'MY_OAUTH_TOKEN'
config.oauth_token_secret = 'MY_OAUTH_TOKEN_SECRET'
end
它对我有效
当然,你的推特应用程序必须具有访问级别=读写。如果你想更新状态、转发等,你必须在dev.twitter.com中更改它。
你试过omniauth twitter gem吗??https://github.com/arunagw/omniauth-twitter