LinqToTwitter UploadMediaAsync "тип мультимедиа не распознан". - PullRequest
0 голосов
/ 30 апреля 2018

При попытке загрузить изображение в 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, для которой требуются параметры.

1 Ответ

0 голосов
/ 01 мая 2018

Оказывается, проблема заключалась в том, что URL, который я передаю этой функции, был URI страницы, а не SRC изображения. Таким образом, байт [], который я загружал в твиттер, не был изображением.

...