我正在尝试使用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"}]}
答案 0 :(得分:1)
您可以使用Nuget提供的TweeterSharp插件,而不是使用原生Twitter API。
带有描述的示例由我Post message with image on twitter using C#
撰写特别是这是代码段
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();
}
完整的演示可以随文章一起下载,随时可以下载。
由于
答案 1 :(得分:0)
我从未使用过吊床或c#,但我知道我们有类似的问题......
我们的核心推特库适用于所有内容,但我们无法将图片上传工作。事实证明,我们的Twitter lib所依赖的OAuth库在发布文件时没有正确计算签名。我们必须更新我们的oauth以使其正常工作。
在我们的案例中,一旦我替换了更新的OAuth,我们尝试使用的确切代码就可以正常运行。
如果您使用的是较旧版本的OAuth,我建议您查找更新版本,然后将快速脚本整合在一起试用。
关于该错误消息,它可能更像是一个红色的鲱鱼而不是一个有效的消息 - 特别是因为它甚至没有列在他们的错误页面上: