【发布时间】:2010-11-01 13:33:10
【问题描述】:
我正在尝试使用 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 上的数据。"
但它仍然在说“只读应用程序无法 POST”。 WTF!?
我已经用谷歌搜索了这条错误消息,直到我脸色发青。我发现某处说要将查询字符串参数 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%2bQ0AJoAJ%2flQfzs8SLjC%2fQ%3D P>
生成的授权重定向 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 P>
状态更新 API 调用: 网址 - 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 P>
【问题讨论】:
-
Status Update API call不是缺少oauth_verifier吗?我也只能发布包含此参数的帖子...和oauth_callback... -
哇,这既是一个问题,也是一个非常好的浓缩 Twitter oauth 流备忘录。 1000 天后拯救了我的一天。