はじめに
この記事はシリーズ物です。
シリーズの記事は以下を参照ください
www.project-unknown.jp www.project-unknown.jp www.project-unknown.jp
今日はTwitter Kit for UnityでTwitter認証の記事を書きます。
アセットはこれ
最初の背景はどちらかと言うと愚痴りたかったので書いているだけで、中身がありません。急いでいる方は「アセットのimport」から読み進めてください
背景
FirebaseとUnityとを連携させたかったので、公式を見ながら始めようとしたのですが、、
思いっきりNativeコードでOAuth認証まで終わらせて来いやって書いてあり衝撃を受け、UnityでのTwitter認証について調べた次第です。
ちなみに、その時の愚痴がこれ
UnityでFirebaseのAuthにTwitter認証を使おうとしたら、一番大事な認証の部分はNativeでやれってなってて詰んだ(;・∀・)ここくらいはサポートしてほしかったorz
— ゆう@あんのうん (@YuwUnknown) 2017年8月26日
また、何故Twitter Kit for Unityなのかと言うと、よく調べると至るサイトがFabricでやれって書いてあったのですが、
FabricってGoogle(Firebase)に吸収されるから今後どうなるかわからんやん
というか、FabricのTwitterKitが見当たらん
その時の愚痴がこれ
UnityのFabricからTwitter Kitを入れようとしたら、Twitter Kitなくなってる・・・
— ゆう@あんのうん (@YuwUnknown) 2017年8月26日
んで、途方に暮れてNativeで書こうか悩んだんですが、折角このAssetがあるなら使ってみようと思った次第です。
なので、最終的にTwitter Kit for UnityでTwitter認証を行い、そこから取得したToken情報を使ってFirebaseまでを目的にしており、
Twitter Kit for Unityの使い方にフォーカスしてます。
(Firebaseだけじゃなくて、このAssetの使い方で戸惑っている人も活用いただけると思い
と言うか、他のサイトで記載されているのが、PINコード認証の古い認証のやり方かFabricでの認証くらいしか見当たらなくて私自身が本当に困ったのが、この記事を書く一番の要因だったのですがね(;・∀・)
アセットのimport
まずは、アセットをダウンロードしましょう。
上記のTwitter Kit for UnityのAsset Storeでimportするか、公式のInstallationからの直リンでpackageを落としてUnityにimportします。
公式からDLする場合は、以下のキャプチャを参考にしてください。
Twitter Developerの設定
Twitter API初期設定
https://dev.twitter.comでTwitterの設定を行います。
アカウントを取得していないのであれば、アカウント取得から実施してください。
画面上部のMy Appから、以下の画面が開くのでCreate New Appをクリックします。
キャプチャでは、Firebase用のSampleを造りたかったので、「UnityFirebaseSample」としてます。
次が、登録の入力例です。
コールバックURLは、Firebaseの場合は指定されています。
これについては、Firebaseの記事を直ぐに執筆予定ですので、そこで説明します。
Twitter APIのPermission設定
ここまで、来ると、以下の画面になっていると思いますので、Permissionをクリックします。
特に認証をするだけなら、Read onlyだけで良いのですが、Tweetとかもさせたい場合は、 Read and Writeとかに設定しておきます。
Twitter APIのSetting
次はSettingをクリックします。
公式にある通り、Call backのロックを解除しておきます。(デフォルトは解除されていると思います)
Twitter APIのKeys and Access Tokensの API Keyと API Secretを控える
以下のConsumer Key (API Key)と、Consumer Secret (API Secret)を控えます。後で使います。
ここまでで、Twitter APIの設定が完了です。
お次はUnityの設定を行っていきます。
Unityの設定。
Twitter Kitのセットアップ
冒頭で書いた通り、ここまででTwitter Kit for Unityがimportされていると思うので、その体で進めます。
まず、importが正常に完了していると、メニューにTools > Twitter Kitとあると思うので、それをクリックします。
inspectorが、以下のキャプチャの通りの画面になっていると思うので、ここに先程控えていた Consumer Keyと Consumer Secretを入力します。
TwitterInit.csをGameObjectにアタッチ
importパッケージの中に、「TwitterInit.cs」が梱包されているので、これをScene上のGameObjectにアタッチします。
これを忘れると動きませんのでご注意ください(私が、この作業をすっ飛ばしたせいで、3時間位悩みました)
コードを記載
さぁやっとここでコードの記載です。
ここでは、Gameを起動した瞬間にTwitter認証を行おうとしています。
上記をTwitterKitForUnitySample.csというファイル名で保存して、適当なGameObjectにアタッチします。
注意
ファイル名を別にしたい場合は、クラス部分の
public class TwitterKitForUnitySample : MonoBehaviour {
を
public class 変更したいファイル名 : MonoBehaviour {
に変更してください。
ファイル名とクラス名が違う場合はアタッチができなくなるのでご注意ください。
Twitterの認証が成功した際に、
public void LoginComplete(TwitterSession session) {
上記メソッドが呼ばれ、TwitterSessionの中に、ユーザを識別する情報が入っています。
ここでは、その他のTweetや、別なサードパーティのシステム(Firebase等)の認証にAccessTokenとAccessTokenのSecretが必要になってくるので、それを抜き出しています。
Build
iOSの場合は、Twitter Kit for UnityがiOS 7.0をサポートしていないので、8とか9以上に設定しておきましょう。
(デフォルトが7になっているはずです)
実際に動かす。
すんません、認証のキャプチャ取るのを完全に忘れてました
しかも一度認証すると次は自動で認証が走るので取れませんでした(;・∀・)
XCode等でのログで以下が流れていればOKです
[Info] : Login success. アクセストークン"
さいごに
次はFirebaseと認証して、Firebase上でTwitterユーザでランキングを作るって所まで最終的に記事に書いていきたいと思います。
また、UnityのTwitter認証で調べると、大体がFabricかSocialConnectorとかが引っかかってアプリ内でTwitter認証, Tweetを実施したかった人の助けになれば幸いです。
余談
Twitter Kit for UnityをUnity Cloud buildに掛けると、以下のようなログが出ます。
[Unity] *** {GUID} replaces {GUID} at path assets/plugins/ios/twitterkit.framework/twitterkitresources.bundle/twttr-icn-tweet-place-holder-photo-error@2x.png
(GUID}は人によって違うランダムな英数が出ると思います。
こちらですが、単純に「twttr-icn-tweet-place-holder-photo-error」のerrorがエラーが起きたかのように解釈されてエラーっぽく見えてしまっていますが、これについては問題ありません。
(私がこれに凄いハマった)
余談2
Twitter Kit for Unityは米国在住の13歳以下の子供への提供は出来ません。
(と言うかTwitterのサービス自体がCOPPA(Children's Online Privacy Protection Act)に引っかかっているので、Twitterを使ったアプリを展開する時点で13歳以下の利用が出来ないように対策を練らないといけないかと思います。)
日本在住の子供向けであれば問題はありませんが、海外展開を考えている場合は十分に注意しましょう。
詳細はTwitter Kit for Unity licenseの「7. End Users」に記載がありますので一読ください。