上传图片到Twitter

本文关键字:Twitter | 更新日期: 2023-09-27 17:53:34

我正在尝试使用Twitter API版本1.1和update_with_media上传图像到Twitter。json方法。

https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media

这是我到目前为止的代码,尽管有很多变化,我还是不能成功上传。

    public TwitterResponse UpdateStatus(string message, String fileName, String contentType, byte[] image)
    {
        RestClient client = new RestClient
        {
            Authority = TwitterConstants.Authority,
            VersionPath = TwitterConstants.Version
        };
        message = HttpUtility.HtmlEncode(message);
        client.AddHeader("content-type", "multipart/form-data");
        client.AddField("status", message);
        client.AddField("media[]", Convert.ToBase64String(image) + ";filename=" + fileName + ";type=" + contentType);
        RestRequest request = new RestRequest
        {
            Credentials = this.Credentials,
            Path = "statuses/update_with_media.json",
            Method = Hammock.Web.WebMethod.Post
        };
        return new TwitterResponse(client.Request(request));
    }

我正在使用Hammock来执行这些请求。

只是为了排除可能的其他问题,我可以使用更新成功地向Twitter发布状态更新。json方法。

我也试过使用客户端。AddFile方法,并使用Fiddler,看起来一切都到位了。但是我一直返回的错误信息是

{"errors":[{"code":195,"message":"Missing or invalid url parameter"}]}

上传图片到Twitter

您可以使用Nuget提供的TweeterSharp插件,而不是使用本地Twitter API。

使用c#在twitter上发布带有图片的消息

特别是这段代码

using (var stream = new FileStream(imagePath, FileMode.Open))
            {
                var result = service.SendTweetWithMedia(new SendTweetWithMediaOptions
                {
                    Status = message,
                    Images = new Dictionary<string, Stream> { { "john", stream } }
                });
                lblResult.Text = result.Text.ToString();
            }

完整的演示可随文章下载,请随意下载。

谢谢

我从未使用过Hammock或c#,但我知道我们有类似的问题…

我们的核心推特库工作的一切,但我们不能让图像上传工作。事实证明,我们的twitter库所依赖的OAuth库在发布文件时没有正确计算签名。我们必须更新我们的oauth才能使它工作。

在我们的例子中,当我替换了一个更新的OAuth后,我们试图使用的代码就可以正常工作了。

如果你使用的是旧版本的OAuth,我建议你找一个最新的版本,然后编写一个快速的脚本来尝试。

关于这个错误消息,它可能更像是一个转移注意力的东西,而不是一个有效的消息——特别是因为它甚至没有在他们的错误页面上列出:

https://dev.twitter.com/docs/error-codes-responses