При попытке загрузить изображение в Twitter через LinqToTwitter я получаю следующую ошибку:
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 (см. Метод UploadMediaAsync в строке 86).
Единственное различие, которое я вижу, состоит в том, что образец загружает изображение из файловой системы, в то время как мое находится в CDN, но поскольку оба результата приводят к байту [], я не думаю, что это может быть уместно.
Понятия не имею, что я делаю не так. У меня есть более старый проект, который использует LinqToTwitter v3.1.2, в котором не требуется указывать mediaType или mediaCategory, и этот проект работает. Кажется, проблема связана с версией 4.2.1, для которой требуются параметры.