0

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

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 来执行这些请求。

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

我也尝试过使用 client.AddFile 方法并使用 Fiddler 看起来一切就绪。但是我不断收到的错误消息是

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

2 回答 2

2

您可以使用 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();
            }

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

谢谢

于 2015-12-08T22:51:35.583 回答
0

我从未使用过 Hammock 或 c#,但我知道我们遇到了类似的问题......

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

在我们的例子中,一旦我替换了更新的 OAuth,我们尝试使用的确切代码就可以正常工作。

如果您使用的是旧版本的 OAuth,我建议您寻找更新的版本,然后将一个快速脚本组合在一起进行尝试。

关于该错误消息,它可能更像是一条红鲱鱼而不是有效消息 - 特别是因为它甚至没有在他们的错误页面上列出:

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

于 2014-03-26T13:07:00.043 回答