我已成功通过OAuth流程获取访问令牌。
但是,当我尝试对/statuses/update.json端点运行POST时,我收到“无法通过OAuth进行身份验证。”
我正在使用我的消费者秘密验证回来的令牌签名,我不明白还有什么。
Twitter论坛也没有帮助。
任何提示都将不胜感激。
答案 0 :(得分:0)
对Twitter进行身份验证调用可能很麻烦。
确保签名基本字符串中的参数按字母顺序排序。
拿这个:
oauth_consumer_key={consumerkey}&oauth_nonce={nonce}&oauth_signature_method=HMAC-SHA1&oauth_timestamp={timestamp}&oauth_token={token}&oauth_version=1.0&status={tweet text}
填写值,在Base64中对其进行编码,然后将它们组合在一起:
POST&{base64 encoded url}&{base64 encoded base string}
这将是您需要签名的字符串(没有括号)。 (在这种情况下,网址为https://api.twitter.com/1.1/statuses/update.json)
签名密钥需要像这样构建:
{consumer secret}&{token secret}
签名是HMACSHA1哈希,然后是base64编码。
然后你需要把它放在Authorization标题中:
OAuth oauth_consumer_key="{consumer key}",oauth_nonce="{nonce}",oauth_signature="{signature}",oauth_signature_method="HMAC-SHA1",oauth_timestamp="{timestamp}",oauth_token="{token}",oauth_version="1.0"
最后将status=your tweet text
作为发布数据放入您的请求中。
我希望这会有所帮助。