2

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

根据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) 
4

1 回答 1

0

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

Twitter gem 从 twitter.rb 初始化文件中获取消费者密钥/秘密对,而omniauth-twitter 通过环境获取它的对(抱歉,在我的问题中没有显示这个重要信息,因为那部分“有效”)。

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

于 2013-08-28T07:24:31.620 回答