🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

1回答

2294閲覧

ゲーム内で画像付きTweetをシェアしたい(PC,MAC & Linux Standalone)

TKGU

総合スコア3

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2020/12/01 11:52

編集2020/12/02 17:03

現在、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/ )

説明不足なところがあれば、遠慮なくおっしゃってください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Let's Tweet In Unityはもうダウンロード出来ないみたいです
一度購入したことあるなら再ダウンロードは可能ですが...

簡単に調べた程度ですが、

C#

1 // 適当なとこで呼ぶ 2 Application.OpenURL("https://twitter.com/intent/tweet?text=テスト&hashtags=テスト&url=(imgurとか適当な画像のURL)");

こんな感じでテキスト、画像、ハッシュタグ付きでツイート出来るみたいです
スクショ撮ってアップロードしてそのURL使うとかなんとか
https://twitter.com/intent/tweet 画像 unity」みたいな感じでググったら色々出てきます

あとアップロードしまくっていいのかはまた別途調べてもらったら...

投稿2020/12/09 18:10

lazh

総合スコア300

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TKGU

2020/12/11 10:51

回答ありがとうございます、imgur等に予めあげた画像以外は難しそうということでしょうか・・? また、Let's Tweet In Unity以外の方法では現時点打つ手はなさそうですかね? 一応、教えていただいた検索ワードで改めて調べ、 https://pengoya.net/unity/tweet-with-image/ 上記のサイトに従って一度試している最中で、それに伴い【Unity 2018.1.0f2】をインストールしています。(Twityが対応している環境のため) 上記サイトの方法では実現できそうでしょうか、ご意見お願いします。 (UnityのPluginフォルダ→iOSフォルダ内のTwitterKitIOSWrapperインスペクタにて、プラットホーム設定でStanaloneが選択できることはわかりました。)
lazh

2020/12/12 05:27 編集

>imgur等に予めあげた画像以外 Unityから画像アップロードするので大丈夫です すべてゲームプレイ中に完結します >Twity 詳しくないので明言は出来ないですがAPI叩いてるので行ける気がします Developer登録がちょっと面倒かもしれないです >プラットホーム設定でStanalone それは選べるだけなので中身が対応していないなら動かないと思います TwitterKitIOSWrapperという名前ですがAndroidも選べたりします、が当然Androidでは動きません
TKGU

2021/01/20 15:15

長らくお返事できなくて申し訳ありません。 今回色々と調べましたが、解決策は見当たりませんでした。 親切にご相談に乗っていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問