我正在尝试通过Twitter gem使用Twitter API,并使用之前通过omniauth-twitter授权的登录Twitter用户的oauth令牌/秘密来验证呼叫。
通过omniauth-twitter对Twitter用户进行身份验证工作正常。将用户的令牌和秘密存储在模型中,控制器可通过current_twitter_user获取数据。
以下配置(仅应用程序身份验证)正常运行
Twitter.configure do |config|
config.consumer_key = YOUR_CONSUMER_KEY
config.consumer_secret = YOUR_CONSUMER_SECRET
config.oauth_token = YOUR_OAUTH_TOKEN
config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end
Twitter.search("something")
接下来我想使用经过身份验证的用户的oauth_token和oauth_token_secret。
关注documentation for the Twitter gem我将Twitter初始化程序更改为:
Twitter.configure do |config|
config.consumer_key = YOUR_CONSUMER_KEY
config.consumer_secret = YOUR_CONSUMER_SECRET
end
然后我创建了一个动作,其中包含以下代码用于测试目的:
if current_twitter_user
tw_client = Twitter::Client.new(
:oauth_token => current_twitter_user.token,
:oauth_token_secret => current_twitter_user.secret
)
@first_result = tw_client.search("something").results.first.text
end
我的问题:
Twitter搜索引发了“Twitter :: Error :: Unauthorized”异常。 我检查了current_twitter_user提供的令牌和秘密,看起来很好。
知道我应该寻找什么或者我可能做错了什么? 非常感谢帮助/想法。
非常感谢, 欧根
正在使用的宝石:
oauth (0.4.7)
omniauth (1.1.4)
omniauth-oauth (1.0.1)
omniauth-twitter (0.0.16)
twitter (4.8.1)
答案 0 :(得分:0)
我终于确定了问题(经过一夜的睡眠) - 一个愚蠢的配置问题!
Twitter的宝石从twitter.rb初始化文件中获取了消费者密钥/秘密对,而omniauth-twitter通过环境得到了它的对(抱歉,在我的问题中没有显示这些重要信息,因为该部分'工作')。
我混淆了Twitter帐户,并在消费者关键部分使用了两个不同的Twitter应用程序。 Twitter和omniauth-twitter宝石在不同的应用程序上。此方法不会(也不应该)起作用并导致身份验证失败。我当然应该保留消费者详细信息DRY:)