Twitter gem身份验证错误(使用omniauth-twitter令牌/机密)

时间:2013-08-27 18:12:36

标签: ruby-on-rails twitter omniauth

我正在尝试通过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) 

1 个答案:

答案 0 :(得分:0)

我终于确定了问题(经过一夜的睡眠) - 一个愚蠢的配置问题!

Twitter的宝石从twitter.rb初始化文件中获取了消费者密钥/秘密对,而omniauth-twitter通过环境得到了它的对(抱歉,在我的问题中没有显示这些重要信息,因为该部分'工作')。

我混淆了Twitter帐户,并在消费者关键部分使用了两个不同的Twitter应用程序。 Twitter和omniauth-twitter宝石在不同的应用程序上。此方法不会(也不应该)起作用并导致身份验证失败。我当然应该保留消费者详细信息DRY:)