【问题标题】:Twitter API & DotNetOpenAuth & HttpClient: Error "Could not authenticate you"Twitter API & DotNetOpenAuth & HttpClient:错误“无法验证你”
【发布时间】:2013-12-17 22:50:28
【问题描述】:

我正在尝试发布 Twitter 状态更新,但我无法正常工作。

var consumer = new TwitterConsumer(); // WebConsumer implementation
var httpClient = new HttpClient(consumer.CreateAuthorizingHandler("THE_TOKEN", new HttpClientHandler()));

var content = new FormUrlEncodedContent(new Dictionary<string, string>
{
     {"status", "test"}
});

// yes, yes, ugly code, only testing here
var s = httpClient.PostAsync("https://api.twitter.com/1.1/statuses/update.json", content);
var t = s.Result;
var u = t.Content.ReadAsStringAsync().Result; // HTTP 401, response from Twitter is {"errors":[{"message":"Could not authenticate you","code":32}]}

当然,最初我认为我的身份验证令牌或 OAuth 过程存在一些问题,但所有其他事情都正常:

OAuth 身份验证似乎有效,因为我可以访问其他 API 方法,例如 https://api.twitter.com/1.1/account/settings.json

我什至可以在通过 URI 提交status 时发布状态更新,例如POST https://api.twitter.com/1.1/statuses/update.json?status=test。当我尝试将 status 放入请求正文时,我只会收到错误消息。

根据谷歌很多人有类似的问题,不幸的是建议的解决方案(如仔细检查 url 编码或content-Request-Header)对我不起作用(请求看起来应该在提琴手)。

【问题讨论】:

  • api.twitter.com/1.1/statuses/update.json 只接受 POST 方法,所以我不确定您是否可以通过 GET 方法提交状态更新。
  • 将 account/settings.json API 方法中的 HTTP“授权”请求标头与 statuses/update.json 中的“授权”HTTP 请求标头进行比较,并检查“oauth_consumer_key”、“oauth_signature_method”、“ oauth_nonce”、“oauth_token”、“oauth_signature”,还要检查 Content-Type 标头,这可能有助于您找到问题。
  • vzamanillo,GET 方法绝对有效。我不认为我的问题在于 OAuth 身份验证,因为我在 API 上尝试的所有其他方法都可以正常工作。只是不是发布新状态。
  • dev.twitter.com/docs/api/1.1/post/statuses/update,如果您尝试使用 GET,您将收到错误消息。你用的是什么api版本?
  • 对不起,我错了 :( 我仔细检查了,确实我使用了 POST 请求,但是将 status 参数添加到 URL 而不是正文中。所以我使用了 POST 请求,但是一个 GET 参数 - 我会相应地更新我的问题。为混淆道歉。

标签: c# twitter dotnetopenauth dotnet-httpclient


【解决方案1】:

虽然严格来说不能回答您的问题,但这可能会解决您的问题。

我建议你看看linq2twitter。这是一个非常好的用于 Twitter 的 C# api。

您可以窥视(它是开源的)他们如何实现签名请求以查找您的代码的问题,或者实际使用它,而不是弄乱创建/签名请求和解析响应(在我过去的一个项目中使用它) ,工作正常,提供方便的api)。

请参阅 here 以了解发布状态更新的示例,并务必阅读 this docs section 以了解如何在您的场景中正确配置身份验证 (TwitterContext)。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2013-05-23
    • 2016-07-26
    • 2015-02-03
    • 2016-08-08
    • 2016-10-15
    相关资源
    最近更新 更多