Twitter API + OAuth:无法发送状态更新,获得401

时间:2009-06-09 17:14:55

标签: c# asp.net oauth twitter

我正在尝试使用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: / p>

<?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上访问和更新您的数据。“

然而它仍然说“只读应用程序无法发布”。 WTF!?

我用谷歌搜索了这个错误信息,直到我脸色发青。我发现某个地方说要将查询字符串paremeter oauth_access_type = write 添加到重定向网址,该网址转到我已经完成的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>

生成授权重定向网址

http://twitter.com/oauth/authorize?oauth_token = EpyBg3nJGOmtmBjRAAsqqaGHARb2F2F2VcccqHkwio&amp; 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 %三维

状态更新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

5 个答案:

答案 0 :(得分:15)

Dunno问题是什么,但我在Twitter上删除了我的申请注册(你必须在Twitter上注册应用以获取OAuth密钥等),然后重新创建它。现在它工作正常。很奇怪,可能是Twitter搞砸的问题。

我也在使用Tweetsharp(http://tweetsharp.com/),强烈推荐它,它有一个不错的流畅API。注意:切换到Tweetsharp不是修复,我已经切换并遇到了同样的问题,直到我删除并在Twitter上重新创建应用程序注册。

答案 1 :(得分:8)

如果您在应用程序设置为“只读访问”模式时授权您的应用程序访问您的Twitter帐户,并且在将应用程序设置更改为“读写访问权限”后出现“只读应用程序无法POST”错误“那么你必须撤销对https://twitter.com/settings/connections上的应用程序的访问权限,然后重新授权它。在您撤销之前,“只读”access_token往往是粘性的。

答案 2 :(得分:3)

希望这有帮助。

答案 3 :(得分:1)

另外还要看看你的系统的CLOCK是否与互联网同步;在Windows上,您可以通过调整日期时间设置

来完成

因为如果您没有同步CLOCK,您将获得401未经授权的例外;祝你好运 欢呼声

答案 4 :(得分:0)

我现在已经好几次了,没有成功,我在从twitter请求访问令牌时遇到401异常。

我和你一样使用Tweetsharp。