Twitter Fabric の Fabric for Games を少し使ってみた。 Twitter にログインしてスクリーンショットを投稿することがとても簡単にできる。 また、ログイン時に取得した認証情報を使えば、API にアクセスすることもできるので、 Twitter を使いたいけど iOS/Android でネイティブプラグイン書くのはちょっと面倒というときに良いかもしれない。

概要

  • Fabric の Twitter Kit を使って Twitter にログインする
  • Twitter Kit を使って Twitter に投稿する
  • OAuth 認証用のヘッダを作って、ユーザーのホームタイムラインを取得する

基本的なこと

Fabric Plugin をインストールする

Getting Started に従ってインストールする。

ダウンロードは、Fabric | Download Plugins から。

download.png

.unitypackage 形式でダウンロードできるので、いつもどおり Unity にインポートする。 インポートが完了すると、エディタのメニューに Fabric が追加されるので、後は Fabric > Prepare Fabric を実行して、 ウィザードに従って進めて行けばいい。

今回は Twitter にログインするために Twitter Kit を入れておく。

prepare.png importable_kits.png importing_twitter_kit.png

Twitter にログインする

Getting Started の Log in with Twitter の項にあるとおり。 Twitter クラスのメソッドをひとつ呼び出すだけでログインできる。

ログイン結果

ログイン成功のコールバックに渡される TwitterSession クラスは id を持っているので、ログインしたユーザーを一意に識別することができる。 その他取得できるプロパティは以下のとおり。

プロパティ is 何
session.id user_id
session.userName screen_name
session.accessToken.token OAuth access token
session.accessToken.secret OAuth access token secret

Twitter に投稿する

Twitter.Compose メソッドで Twitter Card 形式のツイートを投稿することができる。 ゲームのスクリーンショットを投稿してもらって、アプリインストールへの導線にするような使い方を想定されているっぽい。

ただし、メッセージを投稿できない。メッセージを投稿したり、タイムラインを取得したりする場合は、下記のように自分で API を叩いてあげれば良い。

ユーザーのホームタイムラインを取得する

Twitter Kit では他の REST API へアクセスするメソッドは用意されていない。 ただし、TwitterSession から OAuth のトークンとシークレットを取得できるので、OAuth 認証用のヘッダーを自分で用意すれば、API にアクセスできる。

ヘッダーについては、Authorizing a request | Twitter Developers を参考にする。

ヘッダーを全部自分で作るのは面倒なので、danielcrenna/oauth: A public domain OAuth client library written in C# を使っている。 また、HTTP リクエストには neuecc/UniRx: Reactive Extensions for Unity を使っているが、ヘッダーが設定できれば何でも良い。

レスポンスで JSON 形式の文字列が取得できるので、あとは LitJson なり UnityEngine.JsonUtility なりを使ってパースする。(面倒ではある :skull:

補足

Fabric セットアップ時に設定した Consumer Key や Secret は Assets/Editor Default Resources/FabricSettings.asset に保存されている。

まとめ・感想

  • Fabric の Twitter Kit を使って Twitter にログインしてみた
    • メソッドひとつ呼び出すだけで、OAuth のトークンとシークレットが取得できた
  • Twitter Kit を使って Twitter に投稿できることを確認した
    • Card 形式で投稿できる
    • スクリーンショットを投稿できる
    • メッセージを設定することはできない
  • OAuth 認証用のヘッダを作って、ユーザーのホームタイムラインを取得した
    • ヘッダーを作るのは、OAuth のライブラリを使えば簡単にできる

ログインまで簡単にできるのがとても良い :sparkles: また、ログイン時に取得した認証情報を使えば、API にアクセスすることもできるので、 Twitter を使いたいけど iOS/Android でネイティブプラグイン書くのはちょっと面倒というときに良いかもしれない。

ただし API へのアクセスは標準でもうちょっとサポートしてほしい。 iOS 版の Twitter Kit では TWTRAPIClient みたいなクラスがあるので、Unity 版でも使えたらうれしいんだが。

Twitter がゲームのプラットフォームになったら相当数のディベロッパーが集まると思うんだけど、SDK がなんかおしい感じ。

参考