Unityの無料Asset、Let's Twitter in Unityを用いTwitterクライアントを製作しています。
このアセットには画像ツイートメソッドは含まれていないため、文字のみのツイートをポストするメソッドを真似て画像をアップロードするメソッドを作りたいのですが、エラーが返ってきてしまいなかなかうまくいきません。
以下が真似て作ったメソッドになります。
https://syncer.jp/twitter-api-matome#sec-6
このページを参考にheaderとWWWFormを作ったのですが、
BadRequest:Code:38,media parameter is missing
のエラーが返ってきてしまいます。
また、boundaryについてよくわかっておらず、AddFieldでboundaryを追加してもBadRequestが返ってきてしまいました。
C#
1 2public static IEnumerator UploadPic(string picture, string consumerKey, string consumerSecret, AccessTokenResponse response, UploadPicCallback callback) 3{ 4 5 Dictionary<string, string> parameters = new Dictionary<string, string>(); 6 7 // Add data to the form to post. 8 WWWForm form = new WWWForm(); 9 form.AddField("Content-Disposition", "form-data"); 10 form.AddField("name", "media_data"); 11 form.AddField(picture, ""); 12 13 14 15 // HTTP header 16 17 Dictionary<string, string> headers = new Dictionary<string, string>(); 18 headers["Authorization"] = GetHeaderWithAccessToken("POST", UploadPicURL, consumerKey, consumerSecret, response, parameters); 19 headers["Content-Type"] = "multipart/form-data; boundary="; 20 21 22 WWW web = new WWW(UploadPicURL, form.data, headers); 23 24 yield return web; 25 26 if (!string.IsNullOrEmpty(web.error)) 27 { 28 Debug.Log(string.Format("UploadPic - failed. {0}\n{1}", web.error, web.text)); 29 callback(false, web.error); 30 } 31 else 32 { 33 string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; 34 35 if (!string.IsNullOrEmpty(error)) 36 { 37 Debug.Log(string.Format("UploadPic - failed. {0}", error)); 38 callback(false, web.error); 39 } 40 else 41 { 42 callback(true, web.text); 43 } 44 } 45 46 } 47
以上がメソッドになります。
引数のpictureはアップロードする画像をBase64に変換したStringになります。
Consumer_keyとConsumer_Secretはツイッターのアプリケーションのキーで正しいものが入っています。
responseはユーザの認証情報でこれも正しいです。
callbackはコールバック関数でログの表示のみを行います。
調べがついているのは
WWWForm form = new WWWFormに必要なデータで上記の参考URLのリクエストボディにあたる部分
Dictionaryのheaderは署名とヘッダーにあたる部分で、参考URLの文字列のみのツイートのヘッダーと比較を行いながら作成したため、これは正しいと踏んでいるのですが、解説しているサイト等がないため確証はありません。
headersとformにどの要素を入れれば良いかご教授願えないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/19 18:51
2016/12/19 18:57 編集
2016/12/19 19:25