Twitter Kit for UnityでTwitter認証を行う - UnityでFirebaseを使ったオンラインランキングシステムを作るvol1

はじめに

この記事はシリーズ物です。
シリーズの記事は以下を参照ください

www.project-unknown.jp www.project-unknown.jp www.project-unknown.jp

今日はTwitter Kit for UnityでTwitter認証の記事を書きます。

アセットはこれ

最初の背景はどちらかと言うと愚痴りたかったので書いているだけで、中身がありません。急いでいる方は「アセットのimport」から読み進めてください

背景

FirebaseとUnityとを連携させたかったので、公式を見ながら始めようとしたのですが、、

f:id:project-unknown:20170827033146p:plain

思いっきりNativeコードでOAuth認証まで終わらせて来いやって書いてあり衝撃を受け、UnityでのTwitter認証について調べた次第です。

ちなみに、その時の愚痴がこれ

また、何故Twitter Kit for Unityなのかと言うと、よく調べると至るサイトがFabricでやれって書いてあったのですが、

FabricってGoogle(Firebase)に吸収されるから今後どうなるかわからんやん
というか、FabricのTwitterKitが見当たらん

その時の愚痴がこれ

んで、途方に暮れて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する場合は、以下のキャプチャを参考にしてください。

f:id:project-unknown:20170827034004p:plain

Twitter Developerの設定

Twitter API初期設定

https://dev.twitter.comでTwitterの設定を行います。
アカウントを取得していないのであれば、アカウント取得から実施してください。

画面上部のMy Appから、以下の画面が開くのでCreate New Appをクリックします。
キャプチャでは、Firebase用のSampleを造りたかったので、「UnityFirebaseSample」としてます。

f:id:project-unknown:20170827034326p:plain

次が、登録の入力例です。

f:id:project-unknown:20170827034442p:plain

コールバックURLは、Firebaseの場合は指定されています。
これについては、Firebaseの記事を直ぐに執筆予定ですので、そこで説明します。

Twitter APIのPermission設定

ここまで、来ると、以下の画面になっていると思いますので、Permissionをクリックします。

f:id:project-unknown:20170827034621p:plain

特に認証をするだけなら、Read onlyだけで良いのですが、Tweetとかもさせたい場合は、 Read and Writeとかに設定しておきます。

f:id:project-unknown:20170827034724p:plain

Twitter APIのSetting

次はSettingをクリックします。

f:id:project-unknown:20170827034803p:plain

公式にある通り、Call backのロックを解除しておきます。(デフォルトは解除されていると思います)

f:id:project-unknown:20170827034829p:plain

Twitter APIのKeys and Access Tokensの API Keyと API Secretを控える

以下のConsumer Key (API Key)と、Consumer Secret (API Secret)を控えます。後で使います。 f:id:project-unknown:20170827034951p:plain

ここまでで、Twitter APIの設定が完了です。
お次はUnityの設定を行っていきます。

Unityの設定。

Twitter Kitのセットアップ

冒頭で書いた通り、ここまででTwitter Kit for Unityがimportされていると思うので、その体で進めます。

まず、importが正常に完了していると、メニューにTools > Twitter Kitとあると思うので、それをクリックします。

f:id:project-unknown:20170827035202p:plain

inspectorが、以下のキャプチャの通りの画面になっていると思うので、ここに先程控えていた Consumer Keyと Consumer Secretを入力します。

f:id:project-unknown:20170827035233p:plain

TwitterInit.csをGameObjectにアタッチ

importパッケージの中に、「TwitterInit.cs」が梱包されているので、これをScene上のGameObjectにアタッチします。

f:id:project-unknown:20170827035446p:plain

これを忘れると動きませんのでご注意ください(私が、この作業をすっ飛ばしたせいで、3時間位悩みました)

コードを記載

さぁやっとここでコードの記載です。
ここでは、Gameを起動した瞬間にTwitter認証を行おうとしています。

gist.github.com

上記を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になっているはずです)

f:id:project-unknown:20170827040645p:plain

実際に動かす。

すんません、認証のキャプチャ取るのを完全に忘れてました
しかも一度認証すると次は自動で認証が走るので取れませんでした(;・∀・)

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」に記載がありますので一読ください。

参考