【问题标题】:Twitter API + OAuth: Can't send status updates, getting 401Twitter API + OAuth:无法发送状态更新,收到 401
【发布时间】: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 天后拯救了我的一天。

标签: c# asp.net oauth twitter


【解决方案1】:

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

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

【讨论】:

  • 这也解决了我的问题……看来 twitter 有问题将只读应用程序更改为读写。
  • 删除并重新创建了 twitter 应用程序。我认为我第二次没有做任何不同的事情,但它奏效了。
  • 谢谢!这真的救了我一命。 Twitter 对此有一个错误。
  • 我只需要在我的应用程序的“详细信息”页面上单击“重新创建我的访问令牌”按钮。 (不确定发布此答案时该按钮是否存在。)
  • Tweetsharp 现在是一艘废弃的船。 twitterizer.net 是当今在 asp.net 中与 twitter 进行通信的方式
【解决方案2】:

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

我和你一样使用 Tweetsharp。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 完全救了我的命!我一直在为“只读应用程序无法发布”苦苦挣扎一个小时......我已经重新创建了几次应用程序,但每次访问令牌都是在应用程序设置“读/写”选项之前生成的。
    • 完美:) :) thnx .. 这帮助很大:)
    【解决方案4】:

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

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

    【讨论】:

    • 发现 - 这发生在我身上 - 感谢您发布此内容,因为它让我能够解决我的问题
    【解决方案5】:

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2016-03-12
      • 2012-01-11
      相关资源
      最近更新 更多