Unity での Google Play ゲームのサインインを使用して PlayFab 認証を設定する
前提条件
- Unity ゲーム エンジンを使用してビルドされたプロジェクト。
- Google デベロッパー アカウント。
- PlayFab でゲーム タイトルにアクセスできる PlayFab デベロッパー アカウント。
- PlayFab Unity エディターの拡張機能と Unity SDK。
- Google Play ゲーム SDK。
- ログインの基本とベスト プラクティス を理解していること。
はじめに
まず、Google Play の基本的な設定を行います。 これらのタスクの一部を実現する方法については良いガイドがいくつかありますので、ここでは説明しません。
アプリケーション を作成する - アプリケーションが作成されていない場合は、 Google Play デベロッパー コンソールで作成する必要があります。
ゲーム AAB をビルドし、内部テスト用にアップロードします。 このガイドに従って、アプリをリリースして内部テストを追跡する方法について説明します。署名プロセス中は、アプリ バンドルではこの目的のために独自のキーストアを使用する必要があることを考慮してください。 キーストアの作成方法については、こちらのドキュメントを参照してください。
「Google Play ゲーム サービスの設定」ページの手順に従って、Google Play ゲーム サービスを設定します。
Google Play ゲーム SDK をダウンロードしてインストールします。
PlayFab Unity SDK をインストールします (このタスクの実行方法については、「Unity3D クイックスタート ガイド」を参照してください)。
Google Play ゲームの設定
Google Play ゲームは、Google Play ゲーム SDK と一緒にインストールされるツールセットから設定できます。 これらのツールには以下の手順でアクセスできます。
[ウィンドウ] タブに移動します。
[Google Play ゲーム] を選択します。
[セットアップ] に移動します。
その後、[Android セットアップ] にアクセスします。
Android 構成ウィンドウが表示されます。この画面でリソース定義と Web アプリ クライアント ID を入力する必要があります。
リソース定義の取得
- Android リソース定義を取得するには、次の手順に従います。
Web アプリ クライアント ID の取得
PlayFab で Google サインインを機能させるには、"Web アプリケーション" 型の OAuth クライアント ID 資格情報を作成することで取得できる Web クライアント ID を使用する必要があります。
OAuth クライアント ID を作成する前に、PlayFab API エンドポイントを把握しておく必要があります。次の手順で確認できます。
ゲーム マネージャーにログインします。
タイトルを選択します。
タイトル名の横にある歯車アイコンをクリックしてタイトル設定に移動し、[タイトル設定] を選択します。
[API 機能] タブを選択します。
[API エンドポイント] フィールドに移動します。
タイトル API エンドポイントがわかったので、ここで説明する手順に従って OAuth クライアント ID 資格情報を作成します。
クライアント ID を作成するときは、クライアント ID の承認済み JavaScript 配信元として API エンドポイントを追加する必要があります。
また、独自のアプリケーション リダイレクト URI を認可されているリダイレクト URI として追加してください。 この手順を実行しないと、redirect_uri の不一致エラーが発生します。
クライアント ID を作成すると、次のような画面が表示されます。ここで、生成されたクライアント ID 文字列とクライアント シークレットを取得します。
これで、Unity の Android 構成ウィンドウに戻り、クライアント ID テキスト ボックスにクライアント ID を貼り付けることができます。
両方の値が設定されたので、[セットアップ] を選択できます。
PlayFab Google サインインのセットアップ
PlayFab には、Google のサインインを設定するための独自のプロセスがあります。 この設定は、PlayFab 開発者アカウントで行うことができます。 それをお持ちでない場合は、無料の開発者アカウントにサインアップできます。
PlayFab で Google を設定するには
- ダッシュボードの [アドオン] セクションに移動します。
- [Google アドオン] に移動します。
- ここで、[Google のインストール] ボタンを選択します。
このフォームでは、入力が必要な項目がいくつかあります。
-
Google アプリのパッケージ ID - これは、Android パッケージの名前です。 たとえば、この例では
com.playfab.gpgexample
を使用します。 - Google アプリのライセンス キー - これは必須のフィールドですが、Google サインインとは関係ありません。 このフィールドは、領収書検証 API を使用する領収書検証の設定に使用します。
注意
このライセンス キーは、Google デベロッパー コンソールの [収益化] セクションで、アプリに移動して取得できます。 収益化のセットアップというタイトルのセクションをクリックします。 ここでは、[ライセンス] テキスト ボックスが表示されるまで下にスクロールし、Base64 でエンコードされた RSA 公開キーをコピーしてこのフィールドに貼り付けます。
- Google OAuth クライアント ID - これは、Unity での Google Play ゲーム SDK のセットアップに使用した Web クライアント ID です。
- Google OAuth クライアント シークレット - OAuth クライアント ID の作成時に取得したシークレット キー。
- サービス アカウント キー - このフィールドにはサービス アカウント キー JSON 文字列が必要です。これらの手順に従ってサービス アカウント キーを作成する必要があります。 次に、こちらの手順に従って、そのサービス アカウントの資格情報を作成 します。 資格情報の JSON ファイルを取得したら、JSON コンテンツ全体をこのフィールドに貼り付けます。
保存する前に、アドオン構成は次のようになります。
ヒント
必ず設定を保存してください!
Unity ゲームへ Google サインインを追加する
Google サインインを動作させるためのコードはほんの少しです。 初期化コードが必要です。これは、スタート時 (またはアプリの初期化または起動時のどこか) に入力します。
このコードは、ゲームまたはアプリのアーキテクチャやフレームワークに応じて、さまざまな場所に配置できます。 いずれの場合でも、次のコードにより Google Play ゲーム が初期化されます。
注意
Google Play ゲーム SDK を使用可能とするために、Using ステートメントは必ず使用してください。
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;
public class PFGoogleSignInUnity : MonoBehaviour
{
void Start()
{
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
internal void ProcessAuthentication(SignInStatus status)
{
if (status == SignInStatus.Success)
{
PlayGamesPlatform.Instance.RequestServerSideAccess(false, ProcessServerAuthCode);
}
}
private void ProcessServerAuthCode(string serverAuthCode)
{
Debug.Log("Server Auth Code: " + serverAuthCode);
var request = new LoginWithGooglePlayGamesServicesRequest
{
ServerAuthCode = serverAuthCode,
CreateAccount = true,
TitleId = PlayFabSettings.TitleId
};
PlayFabClientAPI.LoginWithGooglePlayGamesServices(request, OnLoginWithGooglePlayGamesServicesSuccess, OnLoginWithGooglePlayGamesServicesFailure);
}
private void OnLoginWithGooglePlayGamesServicesSuccess(LoginResult result)
{
Debug.Log("PF Login Success LoginWithGooglePlayGamesServices");
}
private void OnLoginWithGooglePlayGamesServicesFailure(PlayFabError error)
{
Debug.Log("PF Login Failure LoginWithGooglePlayGamesServices: " + error.GenerateErrorReport());
}
}
何が起こっているのかを正確に分解しましょう。
- まず、
PlayGamesPlatform.Instance.Authenticate
を使用してログインします。この関数は、結果を処理するパラメーターとしてコールバック関数を受け取り、受信した SignInStatus に基づいてユーザーが正常にログインできたかどうかを知らせます。 - テスト アカウントをアプリに追加しない場合、コールバック SignInStatus の結果はテスト時に常にキャンセルされます。 この問題が発生した場合は、このガイドの手順に従って Google アプリケーションにテスターを追加します。
注意
PlayGamesPlatform.Instance.Authenticate
を呼び出すと、Google Play ゲームのサインイン ダイアログがポップアップ表示されます。
次に、ログインに成功した場合は、別のコールバックを受け取って ServerAuthCode 文字列を返す
PlayGamesPlatform.Instance.RequestServerSideAccess
を呼び出します。次に、
PlayFabClientAPI.LoginWithGooglePlayGamesServices
を呼び出し、ServerAuthCode
パラメーターにより Google から受け取ったAuthCode
を渡します。最後に、
LoginWithGooglePlayGamesServices
呼び出しの結果に応じて、OnLoginWithGooglePlayGamesServicesSuccess
またはOnLoginWithGooglePlayGamesServicesFailure
が呼び出されます。これらのコールバックは、PlayFab へのログイン操作の結果を処理するコールバックです。 この時点で、ログインの成功がダッシュ ボードに表示されます!
このガイドがお役に立てれば幸いです。 ご質問がありましたら、お気軽に コミュニティ フォーラム でお尋ねください。