Unity で Google Play Games サインインを使用した PlayFab 認証のセットアップ
前提条件
- Unity ゲーム エンジンを使用して構築されたプロジェクト。
- Google 開発者アカウント。
- PlayFab のゲーム タイトルにアクセスできる PlayFab 開発者アカウント。
- PlayFab Unity Editor Extensions と Unity SDK。
- Google Play Games SDK。
- ログインの基本とベスト プラクティス に精通していること。
開始する
まず、Google Play でいくつかの基本設定を行います。これらの作業を実行するための優れたガイドがいくつかあるため、車輪の再発明はしません。- アプリケーション を作成します — アプリケーションを作成していない場合は、Google Play Developer Console で作成する必要があります。
- ゲームの AAB をビルドし、内部テスト用にアップロードします。このガイド に従って、アプリを Internal testing トラックにリリースする方法を確認できます。署名プロセスでは、この目的のためにアプリ バンドル用の独自のキーストアを使用する必要があることを考慮してください。キーストアの作成方法については、このドキュメント を参照してください。
- このページの手順に従って Google Play Games サービスをセットアップします: Google Play Games サービスのセットアップ。
- Google Play Games SDK をダウンロードしてインストールします。
- PlayFab Unity SDK をインストールします (この作業を行う方法がわからない場合は、Unity3D クイックスタート ガイド に従ってください)。
Google Play Games の構成
Google Play Games は、Google Play Games SDK と共にインストールされるツールセットから構成できます。これらのツールにアクセスするには:- Window タブに移動します。
- Google Play Games を選択します。
- Setup に移動します。
- 次に Android Setup にアクセスします。
- Android 構成ウィンドウが表示されます。この画面で Resources Definition と Web App Client ID を入力する必要があります。
Resources Definition を取得する
- Android Resources 定義を取得するには、こちら の手順に従ってください。
Web App Client ID を取得する
Google サインインを PlayFab で動作させるには、“Web application” タイプの OAuth Client ID 資格情報を作成することで取得できる Web Client ID を使用する必要があります。 OAuth Client ID を作成する前に、PlayFab API Endpoint を知っておく必要があります。これは、次の手順に従って確認できます:- Game Manager にログインします。
- タイトルを選択します。
- タイトル名の横にある 歯車アイコン をクリックし、Title Settings を選択して、タイトル設定に移動します。
- API Features タブを選択します。
- API endpoint フィールドにコピーします。
- Client ID を作成する際に、API エンドポイントを Authorized JavaScript origin として Client ID に追加する必要があります。
- また、独自のアプリケーション リダイレクト URI を Authorized Redirect URI として追加してください。この手順を行わないと、redirect_uri の不一致 エラーが発生します。
PlayFab Google サインインのセットアップ
PlayFab には、Google サインインをセットアップするための独自のプロセスがあります。このセットアップは、PlayFab 開発者アカウントで行うことができます。持っていない場合は、無料の開発者アカウントにサインアップ できます。 PlayFab で Google をセットアップするには:- ダッシュボードの Add-ons セクションに移動します。
- Google Add-On に移動します。
- そこから Install Google ボタンを選択します。
- Google App Package ID — このフィールドは Android パッケージの名前です。たとえば、サンプルでは
com.playfab.gpgexampleを使用しています。 - Google App License Key — このフィールドは必須ですが、Google サインインとは関係ありません。このフィールドは、Receipt Validation API を使用したレシート検証の設定に使用します。
この License Key は Google Developer Console から取得できます。アプリに移動し、Monetize セクションの下にある Monetization Setup というセクションを選択します。その中で、Licensing テキストボックスが見えるまで下にスクロールし、Base64 でエンコードされた RSA 公開キーをこのフィールドにコピーして貼り付けます。
- Google OAuth Client ID — Unity の Google Play Games SDK セットアップで使用した Web Client ID。
- Google OAuth Client Secret — OAuth Client ID を作成したときに取得したシークレット キー。
- Service Account Key — このフィールドはサービス アカウント キーの JSON 文字列を想定しています。こちら の手順に従ってサービス アカウント キーを作成する必要があります。次に、こちら の手順に従ってサービス アカウントの資格情報を作成します。資格情報 JSON ファイルを取得したら、JSON の内容全体をこのフィールドに貼り付けます。
Unity ゲームに Google サインインを追加する
Google サインインを動作させるためのコードは非常にシンプルです。初期化コードは、Start (またはアプリを初期化または起動する任意の場所) に配置します。 このコードは、ゲームやアプリのアーキテクチャとフレームワークに応じて、さまざまな場所に配置できます。いずれの場合も、次のコードは Google Play Games を初期化します。using ステートメントを忘れないようにして、Google Play Games SDK を使用できるようにしてください。
- まず、
PlayGamesPlatform.Instance.Authenticateでログインします — この関数は結果を処理するコールバック関数をパラメーターとして受け取り、受け取った SignInStatus に基づいてユーザーが正常にログインできたかどうかを知らせます。 - テスト アカウントをアプリに追加しないと、コールバック SignInStatus の結果は、テスト中は常に Canceled になります。この問題が発生した場合は、このガイド の手順に従って、Google アプリケーションにテスターを追加してください。
PlayGamesPlatform.Instance.Authenticate の呼び出しにより、Google Play Games サインイン ダイアログがポップアップ表示されます。-
次に、ログインに成功した場合、
PlayGamesPlatform.Instance.RequestServerSideAccessを呼び出します。これは別のコールバックを受け取り、ServerAuthCode 文字列を返します。 -
次に、
PlayFabClientAPI.LoginWithGooglePlayGamesServicesを呼び出し、Google から取得したAuthCodeをServerAuthCodeパラメーターとして渡します。 -
最後に、
LoginWithGooglePlayGamesServicesの呼び出しの結果に応じて、OnLoginWithGooglePlayGamesServicesSuccessまたはOnLoginWithGooglePlayGamesServicesFailureが呼び出されます。これらのコールバックは、PlayFab へのログイン操作結果を処理します。この時点で、ダッシュボードにログイン成功が表示されるはずです!
