RestSharp, Twitter.Update_with_media无法授权

本文关键字:授权 media with Twitter Update RestSharp | 更新日期: 2023-09-27 18:16:41

尝试发送带有图片的Tweet,使用RestSharp:

  _client = new RestClient("https://api.twitter.com")
        {
            Authenticator = OAuth1Authenticator.ForProtectedResource(Key, Secret, Token, TokenSecret)
        };
RestRequest request = new RestRequest("/1.1/statuses/update_with_media.json", Method.POST);
request.AddFile("media", att.File, att.FileName, "base64");
request.AddParameter("status", postStatus.Text);
var result = await _client.ExecuteTaskAsync(request);

结果是"Could not authenticate you"错误no - 32由于

UPDATE:所有认证参数从oauth_开始,按字母顺序排列,令牌,令牌秘密,应用程序密钥和应用程序密钥秘密是正确的,没有媒体的更新状态正常工作

更新2:

解决方案

 var request = new RestRequest("/1.1/statuses/update_with_media.json", Method.POST);
        request.AlwaysMultipartFormData = true;

        request.AddParameter("status", message, ParameterType.UrlSegment);
        request.AddFile("media[]", file, filename, "application/octet-stream");
        var result = _client.Execute(request);

RestSharp, Twitter.Update_with_media无法授权

这实际上是restsharp 104.4(截至撰写本文时Nuget版本)的问题

我们遇到了同样的问题,但你上面的解决方案对我们不起作用。UrlSegment参数在状态更新时失败,虽然它在调用update_with_media时没有失败,但它也没有发布状态,只是发布图片。

问题在于OAuth1Authenticator,它忽略非oauth POST或GET参数,因此上面的认证错误,以及为什么URL段参数"工作"。

要解决这个问题,请从GitHub获取最新版本的RestSharp并使用它。

对于那些感兴趣的人来说,所涉及的签入是在发布后一个月左右才完成的,可以在这里找到。