2011-07-29 47 views
6

我成功地通过OAuth进程获取访问令牌。获取“无法使用OAuth进行身份验证”。从Twitter尝试POST时

然而,当我试图运行POST到/statuses/update.json终点,我得到一个“无法通过OAuth认证。”

我与我从与消费者的秘密认证回来令牌签名,我不明白,可能是什么。

Twitter的论坛没有帮助的。

任何提示将不胜感激。

+0

首先,尝试用你的钥匙一些GET请求(类似状态/ home_timeline需要身份验证)。它工作吗? – Shcheklein

+10

确保您的服务器时钟与Twitter或其他知名时间服务器同步。如果超过15分钟,Twitter会说不好的签名并失败。 –

+1

我遇到了同样的问题(c/liboauth/maemo5) - 所有事情都通过罚款获得访问令牌(与屏幕名称等) - 但是当我做了一个休息电话(甚至只是一个读取)我得到了这个错误...阅读埃兰的评论我注意到,我工作的虚拟机的时钟是一个小时了!现在它工作:)所以,谢谢伊兰 - 你的评论应该是一个答案,+1。 – fusi

回答

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} 

这将是您需要注册的字符串(不括号)。 (在这种情况下,将URL 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的发布数据中您的要求。

我希望这会有所帮助。

相关问题