2017-07-29 13 views
0

私は数時間、イメージをつぶすつもりですが、モノで作業していないのだろうか?サンプルネットの周りのコードとそれらのすべては私に非常に類似している場合TweetSharp SendTweetWithMedia on MacOSと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 
       }); 
      } 
     } 
    } 

私が読んだ数十:

私が使用するコードは、このです。私は明白な何かを欠いていますか

画像はアップロードされていません。また、tweetはnullです。

編集: 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 }); 
      } 
     } 
    } 

答えて

1

Twitterの画像には多くの制限があります。 Twitter.comのAPIドキュメントを確認してください。イメージは、特定のバイト(ファイル)サイズ以下でなければならず、各次元の特定のピクセル数よりも小さくなければなりません。さらに、特定のファイル形式のみが許可されます。

また、エラーの詳細が表示されるかどうかを確認するために、呼び出し後にTwitterServiceオブジェクトのResponseプロパティをチェックします。

最後に、そのApiメソッドは廃止予定です。あなたはmediamedidのリストを使ってuploadmediaを使い、次にsendtweetメソッドを使うべきです。オリジナルtweetsharp(今放棄されました)はこれをサポートしていませんが、TweetMoaSharpはこれをサポートしています。

+0

ありがとうございました。この問題を引き起こしたのはおそらく放棄されたAPIでした。私はTweetMoaSharpに切り替え、それは魅力のように機能します。 –

0

などのトークン、そしてKeys and Access Tokens]タブに移動し、あなたのAPIキーを作成していることを確認し、自分のアカウントにログインし、https://apps.twitter.com/にアクセスしてください

てくださいあなたは、あなたが

var bytes = File.ReadAllBytes(@"c:/tmp/a.bmp"); 
var d = new Dictionary<string, Stream> { { "x", new MemoryStream(bytes) } }; 
_ts.SendTweetWithMedia(new SendTweetWithMediaOptions { Images = d }); 
→問題なく使用することができます→

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

をごツイーターサービスを作成してください