TweetSharp SendTweetWithMedia在MacOS和Mono上

时间:2017-07-29 19:47:16

标签: c# mono tweetsharp

我现在试图将图片推特几个小时,我开始怀疑它是否只是在使用Mono?

我使用的代码是:

var_dump($collection->getFirstItem()->getData());

如果网上的示例代码和我的所有代码非常相似,我已经阅读过几十个。我错过了一些明显的东西吗?

没有上传图片,推文为空。

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

    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
                });
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

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

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

最后,该Api方法现已弃用。您应该使用uploadmedia,然后使用带有媒体ID列表的sendtweet方法。原始的tweetsharp(现已放弃)并不支持这个,但TweetMoaSharp确实如此。

答案 1 :(得分:0)

请转到https://apps.twitter.com/,登录到您的帐户,然后转到Keys and Access Tokens标签,确保您已创建了api密钥,令牌等。

请确保您正确创建了tweeter服务→

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 });