尝试通过LinqToTwitter将图片上传到Twitter时收到以下错误:
LinqToTwitter.TwitterQueryException:{“request”:“/ 1.1 / media / upload.json”,“error”:“媒体类型无法识别。”}
以下是我用来调用 UploadMediaAsync 方法的代码:
public async Task TweetAsync(string accessToken, string accessTokenSecret, string status, string url)
{
const string mediaType = "image/jpg";
const string mediaCategory = "tweet_image";
byte[] mediaBytes;
using (var webClient = new WebClient())
{
mediaBytes = webClient.DownloadData(url);
}
var twitterContext = new TwitterContext(Authenticate(accessToken, accessTokenSecret));
var media = await twitterContext.UploadMediaAsync(mediaBytes, mediaType, mediaCategory);
await twitterContext.TweetAsync(status, new[] { media.MediaID });
}
“Authenticate”方法只是从存储的凭据创建SingleUserAuthorizer对象。
mediaBytes变量中包含数据,mediaType和mediaCategory变量与LinqToTwitter文档中提供的示例完全相同:https://github.com/JoeMayo/LinqToTwitter/blob/master/Samples/net46/CSharp/AspNetSamples/CoreDemo/Controllers/StatusDemosController.cs(请参阅第86行的'UploadMediaAsync'方法)。
我看到的唯一区别是样本从文件系统加载图像而在CDN上加载了图像,但由于两者都产生了一个字节[],我认为这不是相关的。
我不知道我做错了什么。我有一个较旧的项目,它使用LinqToTwitter v3.1.2,它不需要提供mediaType或mediaCategory,并且该项目有效。这个问题似乎与v4.2.1有关,它确实需要参数。
答案 0 :(得分:1)
原来问题是我传递给此函数的URL是页面URI而不是图像SRC。所以我上传到twitter的字节[]不是图像。