Twitterに画像をアップロードする

Twitter に画像をアップロードする Mevy のコード。参考程度に。
1枚をアップロードする旧形式なので複数枚アップロードできる新形式を推奨。
OAuth には AsyncOAuth を利用。今なら OAuth に加えて Twitter API にも対応してる CoreTweet 推奨。

POST

public async Task<string> PostStatusesUpdateWithMedia(string status, byte[] media, string fileName, Int64? in_reply_to_status_id = null)
{
    var content = new MultipartFormDataContent();
    content.Add(new StringContent(status), "\"status\"");
    content.Add(new ByteArrayContent(media), "media[]", "\"" + fileName + "\"");
    if (in_reply_to_status_id != null)
    {
        content.Add(new StringContent(in_reply_to_status_id.ToString()), "\"in_reply_to_status_id\"");
    }
 
    var client = OAuthUtility.CreateOAuthClient(consumerKey, consumerSecret, accessToken);
    var response = await client.PostAsync("https://api.twitter.com/1.1/statuses/update_with_media.json", content);
    return await response.Content.ReadAsStringAsync();
}

byte[] への変換

[Windows ストアアプリ] IRandomAccessStreamWithContentType を byte[] に変換する | 雪猫ノート

byte[] media = null;
using (IRandomAccessStreamWithContentType stream = await file.OpenReadAsync())
{
    media = new byte[stream.Size];
    using (var reader = new DataReader(stream))
    {
        await reader.LoadAsync((uint)stream.Size);
        reader.ReadBytes(media);
    }
}
 
var json = await client.PostStatusesUpdateWithMedia(status, media, file.Name, in_reply_to_status_id);

カテゴリー: Windows ストア アプリ タグ: , , パーマリンク