LinqToTwitter UploadMediaAsync“媒体类型无法识别”。

时间:2018-04-30 20:00:40

标签: twitter .net-core linq-to-twitter

尝试通过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有关,它确实需要参数。

1 个答案:

答案 0 :(得分:1)

原来问题是我传递给此函数的URL是页面URI而不是图像SRC。所以我上传到twitter的字节[]不是图像。