MacOS 和 Mono 上的 TweetSharp SendTweetWithMedia

TweetSharp SendTweetWithMedia on MacOS and Mono

我现在试着在推特上发布一张图片几个小时,我开始怀疑它是否在 Mono 上不起作用?

我使用的代码是这样的:

    public void SendMediaTweet(string Reply, string ImagePath)
    {
        if (File.Exists(ImagePath))
        {
            using (var stream = new FileStream(ImagePath, FileMode.Open))
            {
                Dictionary<string, Stream> images = new Dictionary<string, Stream> { { ImagePath, stream } };
                var tweet = Service.SendTweetWithMedia(new SendTweetWithMediaOptions
                {
                    Status = Reply,
                    Images = images
                });
            }
        }
    }

我已经在网上阅读了数十种 if 示例代码,它们都与我的非常相似。我是否漏掉了一些明显的东西?

没有上传图片,推文为空

编辑: 正如 Yort 指出的那样, API 调用已被弃用,Tweetsharp 不支持新方法。所以我转而使用 TweetMoaSharp。我使用 TweetMoaSharp 解决它的方法是:

    public void SendMediaTweetReply(string Reply, long StatusId, string ImagePath)
    {
        if (File.Exists(ImagePath))
        {
            using (var stream = new FileStream(ImagePath, FileMode.Open))
            {
                var Media = Service.UploadMedia(new UploadMediaOptions() { Media = new MediaFile() { FileName = ImagePath, Content = stream } });

                List<string> MediaIds = new List<string>();
                MediaIds.Add(Media.Media_Id);

                var Result = Service.SendTweet(new SendTweetOptions() { Status = Reply, InReplyToStatusId = StatusId, MediaIds = MediaIds });
            }
        }
    }

请转到 https://apps.twitter.com/,登录您的帐户,然后转到 Keys and Access Tokens 选项卡并确保您已创建 api 密钥、令牌等

请确保您正确创建了推特服务→

TwitterService _ts = new TwitterService(consumerKey, consumerSecret, token, tokenSecret);

那么就可以正常使用了→

var bytes = File.ReadAllBytes(@"c:/tmp/a.bmp");
var d = new Dictionary<string, Stream> { { "x", new MemoryStream(bytes) } };
_ts.SendTweetWithMedia(new SendTweetWithMediaOptions { Images = d });

Twitter 对图片有很多限制。查看 Twitter.com 上的 API 文档。图像必须小于特定字节(文件)大小,并且每个维度的像素数必须小于特定值。此外,仅允许某些文件格式。

调用后还要检查 TwitterService 对象的响应 属性,看看它是否提供了错误的更多详细信息。

最后,Api 方法现已弃用。您应该使用 uploadmedia,然后使用带有媒体 ID 列表的 sendtweet 方法。原始 tweetsharp(现已废弃)不支持此功能,但 TweetMoaSharp 支持。