我正在尝试使用 Twitter 的 API 和 OAuth 发送状态更新(新推文)。我正在使用 Shannon Whitley .NET 代码示例http://www.voiceoftech.com/swhitley/?p=681(在 Twitter API 文档中推荐)。我可以使用 OAuth 读取(GET)就好了,但是当我尝试通过 http://twitter.com/statuses/update.xml(使用 POST)发送状态更新时,它返回一个带有以下 XML 的 401:
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<request>/statuses/update.xml</request>
<error>Read-only application cannot POST</error>
</hash>
我发誓我已经将我的应用程序设置为使用读写,Twitter 上的授权页面 (http://twitter.com/oauth/authorize) 甚至说“应用程序 TweeVerbs.com(开发)希望能够访问并在 Twitter 上更新你的数据。”
然而它仍然在说“只读应用程序不能发布”。哇!?
我已经用谷歌搜索了这个错误消息,直到我脸色发青。我发现某处说将查询字符串参数oauth_access_type=write添加到重定向 URL,该 URL 转到我已经完成的 Twitter 授权页面,但它仍然给我一个 401。
如果有帮助,以下是根据 OAuth 工作流程发送回来的数据:
请求授权令牌:
http://twitter.com/oauth/request_token?oauth_consumer_key=tViV8vAt4cqSKbGdPGWT7Q&oauth_nonce=2790042&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1244567068&oauth_version=1.0&oauth_signature=KzxcXN%2bQs8SLjJJJJJJJJJJJJJJ2%2Q%3d
生成的授权重定向 URL:
http://twitter.com/oauth/authorize?oauth_token=EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio&oauth_access_type=write
授权屏幕消息: “应用程序 TweeVerbs.com(开发)希望能够访问和更新您在 Twitter 上的数据。此应用程序计划在将来使用 Twitter 为您登录。如果您想连接到Sironfoot 以外的帐户。”
获取访问令牌:
HTTP://twitter.com/oauth/access_token oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q&oauth_nonce = 2016804&oauth_signature_method = HMAC-SHA1&oauth_timestamp = 1244567166&组oauth_token = EpyBg3nJGOmtmBjRUAsqqaGHARb2F2F2VcccqHkwio&oauth_version = 1.0&oauth_signature =%2bEVQUxUPLT%2B%2bkfaG0Vq1YJZXcAw%3D
状态更新API调用: URL - HTTP://twitter.com/statuses/update.xml POST数据- oauth_consumer_key = tViV8vAt4cqSKbGdPGWT7Q&oauth_nonce = 5707692&oauth_signature_method = HMAC-SHA1&oauth_timestamp = 1244567268&组oauth_token = 19130957-nb89DjZhjCAzcbHUa96yRWHqlQFQIJ0AKyXpqnHt1&oauth_version = 1.0&状态=的HelloWorld&oauth_signature = WQA%2bWY0IxveeSJ7G3Ewy3whh1sE%3D