LinqToTwitter UploadMediaAsync "media type unrecognized."

LinqToTwitter UploadMediaAsync "media type unrecognized."

我在尝试通过 LinqToTwitter 将图片上传到 Twitter 时收到以下错误消息:

LinqToTwitter.TwitterQueryException: {"request":"/1.1/media/upload.json","error":"media type unrecognized."}

这是我用来调用 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 上,它确实需要参数。

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