获取"无法通过OAuth进行身份验证".从Twitter尝试POST时

joh*_*ohn 6 twitter oauth twitter-oauth

我已成功通过OAuth流程获取访问令牌.

但是,当我尝试对/statuses/update.json端点运行POST时,我收到"无法使用OAuth进行身份验证".

我正在使用我的消费者秘密进行身份验证后获得的令牌签名,我不明白还有什么.

Twitter论坛也没有帮助.

任何提示将非常感谢.

par*_*tle 1

对 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}
Run Code Online (Sandbox Code Playgroud)

填写值,用 Base64 进行编码,然后将它们组合在一起,如下所示:

POST&{base64 encoded url}&{base64 encoded base string}
Run Code Online (Sandbox Code Playgroud)

这将是您需要签名的字符串(不带括号)。(本例中的 URL 为https://api.twitter.com/1.1/statuses/update.json

签名密钥需要像这样构建:

{consumer secret}&{token secret}
Run Code Online (Sandbox Code Playgroud)

签名是 HMACSHA1 哈希值,然后进行 Base64 编码。

然后您需要将其放入授权标头中:

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"
Run Code Online (Sandbox Code Playgroud)

最后将status=your tweet text作为发布的数据放入您的请求中。

我希望这有帮助。