12

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

4

5 回答 5

15

我不知道问题出在哪里,但我删除了我在 Twitter 上的应用程序注册(您必须在 Twitter 中注册应用程序才能获得 OAuth 密钥等),然后重新创建它。现在它工作正常。很奇怪,可能是 Twitter 搞砸了的问题。

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

于 2009-06-09T21:39:58.407 回答
8

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

于 2010-04-29T21:19:25.273 回答
3

希望这可以帮助。

于 2010-08-26T09:35:21.947 回答
1

另外还要查看您系统的时钟是否与互联网同步;在 Windows 上,您可以通过调整日期时间设置来做到这一点

因为如果您的 CLOCK 未同步,您将获得 401 未经授权的异常;祝你好运

于 2010-05-11T07:14:04.860 回答
0

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

我和你一样使用 Tweetsharp。

于 2010-02-25T23:47:51.970 回答