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