現在、Twitterにゲーム内で撮影した画像と一緒にシェア、投稿する機能を搭載したいと考えています。
プラットフォームはMac向けで作っていますが、様々なサイトを漁ってみて殆どiPhoneやAndroid向けのページしかなく、辛うじて以下のサイトにたどり着いたのですが正直なところ理解できませんでした。
・UnityのLet's Tweet in Unityを用いた画像ツイート
(https://qiita.com/t_hoshiyama/items/35a2966144aeed8ba1ab)
・UnityのLet's Tweet in Unityを用いた画像ツイート
(https://teratail.com/questions/59416)
Twitterに上げるためのスクリーンショットは別のシーンで撮っているので、ボタンを押したらツイート画面に飛ぶようにしたいです。(アセット内のフォルダに画像を保存しています。)
一体、このリンクのものは自分の状況でも実現可能なのか、できるとしたらどのように手順を踏めば良いのか教えていただけると幸いです。
↓二つ目のリンクにあったものですが、使い方がわかりません
C#
1// 1回目のレスポンスJSONをオブジェクトに変換するためのクラス 2class strctImage 3{ 4 public string image_type; 5 public long w; 6 public long h; 7} 8class mediaResponse 9{ 10 public long media_id; 11 public string media_id_string; 12 public long size; 13 public long expires_after_secs; 14 public strctImage image; 15} 16 17// Twitter.csに追加するメソッド 18public static IEnumerator PostTweetWithMedia(string text, string imagePath, string consumerKey, string consumerSecret, AccessTokenResponse response, PostTweetCallback callback) 19{ 20 if (string.IsNullOrEmpty(text) || text.Length > 140) 21 { 22 Debug.Log(string.Format("PostTweet - text[{0}] is empty or too long.", text)); 23 24 callback(false); 25 } 26 else 27 { 28 FileStream fileStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read); 29 BinaryReader bin = new BinaryReader(fileStream); 30 byte[] bytes = bin.ReadBytes((int)bin.BaseStream.Length); 31 var bs64 = Convert.ToBase64String(bytes); 32 bin.Close(); 33 34 Dictionary<string, string> mediaParameters = new Dictionary<string, string>(); 35 mediaParameters.Add("media_data", bs64); 36 WWWForm mediaForm = new WWWForm(); 37 mediaForm.AddField("media_data", bs64); 38 var mediaHeaders = new Dictionary<string, string>(); 39 mediaHeaders.Add("Authorization", GetHeaderWithAccessToken("POST", UploadMediaURL, consumerKey, consumerSecret, response, mediaParameters)); 40 WWW mediaWeb = new WWW(UploadMediaURL, mediaForm.data, mediaHeaders); 41 42 yield return mediaWeb; 43 44 string media_id_string = ""; 45 if (!string.IsNullOrEmpty(mediaWeb.error)) 46 { 47 Debug.Log(string.Format("PostMedia - failed. {0}\n{1}", mediaWeb.error, mediaWeb.text)); 48 callback(false); 49 yield break; 50 } 51 else 52 { 53 string error = Regex.Match(mediaWeb.text, @"<error>([^&]+)</error>").Groups[1].Value; 54 55 if (!string.IsNullOrEmpty(error)) 56 { 57 Debug.Log(string.Format("PostTweet - failed. {0}", error)); 58 callback(false); 59 yield break; 60 } 61 else 62 { 63 var res = JsonUtility.FromJson<mediaResponse>(mediaWeb.text); 64 media_id_string = res.media_id_string; 65 } 66 } 67 68 Dictionary<string, string> parameters = new Dictionary<string, string>(); 69 parameters.Add("status", text); 70 parameters.Add("media_ids", media_id_string); 71 WWWForm form = new WWWForm(); 72 form.AddField("status", text); 73 form.AddField("media_ids", media_id_string); 74 75 // HTTP header 76 var headers = new Dictionary<string, string>(); 77 headers.Add("Authorization", GetHeaderWithAccessToken("POST", PostTweetURL, consumerKey, consumerSecret, response, parameters)); 78 79 WWW web = new WWW(PostTweetURL, form.data, headers); 80 yield return web; 81 82 if (!string.IsNullOrEmpty(web.error)) 83 { 84 Debug.Log(string.Format("PostTweet - failed. {0}\n{1}", web.error, web.text)); 85 callback(false); 86 } 87 else 88 { 89 string error = Regex.Match(web.text, @"<error>([^&]+)</error>").Groups[1].Value; 90 91 if (!string.IsNullOrEmpty(error)) 92 { 93 Debug.Log(string.Format("PostTweet - failed. {0}", error)); 94 callback(false); 95 } 96 else 97 { 98 callback(true); 99 } 100 } 101 } 102}
環境
・Unityバージョン_2019.2.12f1
・使用OS_macOS Catalina 10.15.4
・Target platform_Mac OS X
最初、SocialConnectorを使えばできると思いダウンロードしたりして色々と試しましたが、できないことが判明して質問に至った次第です。どなたかお願い致します。
・【Social Connector】UnityアプリでTwitterやLINEを使う方法!
(https://clrmemory.com/programming/unity/socialconnector-twitter-line/)
・Unityのリソース保存パス
(http://wmetawdata.blogspot.com/2017/03/unity.html )
・【Unity】Twitterと連携して画像付きでツイートする方法
(https://pengoya.net/unity/tweet-with-image/ )
説明不足なところがあれば、遠慮なくおっしゃってください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/11 10:51
2020/12/12 05:27 編集
2021/01/20 15:15