RoR Twitter API oAuth:“无法验证你的身份。”

我尝试将我的应用连接到Twitter API。 我不确定,但我认为我的问题来自oauth_signature。 所以我读了这个文档:https://dev.twitter.com/oauth/overview/creating-signatures

我认为我做了像他们说的一切,但它不起作用,我没有任何线索为什么。

这是我的代码:

  def build_url_api(parameters, token, account, secret_token)
   consumer_key = 'xxx'
   secret_consumer_key = 'xxx'

   oauth_consumer_key = consumer_key
   oauth_signature_method = "HMAC-SHA1"
   oauth_timestamp = Time.zone.now.to_i.to_s
   oauth_nonce = Digest::SHA256.hexdigest(oauth_timestamp)[0..16]
   oauth_version = "1.0"
   oauth_token = token
   url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'

   parameters = 'oauth_consumer_key=' +
   oauth_consumer_key +
   '&oauth_nonce=' +
   oauth_nonce +
   '&oauth_signature_method=' +
   oauth_signature_method +
   '&oauth_timestamp=' +
   oauth_timestamp +
   '&oauth_token=' +
   oauth_token +
   '&oauth_version=' +
   oauth_version

   base_string = 'GET&' + CGI.escape(url) + '&' + CGI.escape(parameters)
   secret_key = secret_consumer_key + '&' +secret_token
   oauth_signature = CGI.escape(Base64.encode64("#{OpenSSL::HMAC.digest('sha1',secret_key, base_string)}").chomp)
   url = url + '?' + parameters + '&oauth_signature=' + oauth_signature
 end

OAuth参数的名称类似于oauth_* ,并且与URL参数不同。 您需要使用Authorization HTTP标头发送它们,而不是URL中的查询字符串。 授权标头值的格式如下: OAuth pe_name1="pe_value1", pe_name2="pe_value2",… pe_name_last="pe_value_last" 。 这里pe_表示百分比编码。

另外请注意,一般来说,您还需要使用实际的URL参数来生成基本字符串。 否则,它会为具有URL参数的请求产生错误的签名(如count=39 )。


对我感到羞耻我找到了解决办法:

我刚刚有一个旧的consumer_key。

我的代码示例在这里运行良好。

链接地址: http://www.djcxy.com/p/66193.html

上一篇: RoR Twitter API oAuth : "Could not authenticate you."

下一篇: using cURL with Twitter API is giving me an error