次の方法で共有


Unity での Google Play ゲームのサインインを使用して PlayFab 認証を設定する

前提条件

はじめに

まず、Google Play の基本的な設定を行います。 これらのタスクの一部を実現する方法については良いガイドがいくつかありますので、ここでは説明しません。

  1. アプリケーション を作成する - アプリケーションが作成されていない場合は、 Google Play デベロッパー コンソールで作成する必要があります。

  2. ゲーム AAB をビルドし、内部テスト用にアップロードします。 このガイドに従って、アプリをリリースして内部テストを追跡する方法について説明します。署名プロセス中は、アプリ バンドルではこの目的のために独自のキーストアを使用する必要があることを考慮してください。 キーストアの作成方法については、こちらのドキュメントを参照してください。

  3. 「Google Play ゲーム サービスの設定」ページの手順に従って、Google Play ゲーム サービスを設定します。

  4. Google Play ゲーム SDK をダウンロードしてインストールします。

  5. PlayFab Unity SDK をインストールします (このタスクの実行方法については、「Unity3D クイックスタート ガイド」を参照してください)。

Google Play ゲームの設定

Google Play ゲームは、Google Play ゲーム SDK と一緒にインストールされるツールセットから設定できます。 これらのツールには以下の手順でアクセスできます。

  • [ウィンドウ] タブに移動します。

  • [Google Play ゲーム] を選択します。

  • [セットアップ] に移動します。

  • その後、[Android セットアップ] にアクセスします。

    Google Play ゲームの設定

  • Android 構成ウィンドウが表示されます。この画面でリソース定義と Web アプリ クライアント ID を入力する必要があります。

    Android リソースを空のボックスに貼り付ける

リソース定義の取得

  • Android リソース定義を取得するには、の手順に従います。

Web アプリ クライアント ID の取得

PlayFab で Google サインインを機能させるには、"Web アプリケーション" 型の OAuth クライアント ID 資格情報を作成することで取得できる Web クライアント ID を使用する必要があります。

OAuth クライアント ID を作成する前に、PlayFab API エンドポイントを把握しておく必要があります。次の手順で確認できます。

  • ゲーム マネージャーにログインします。

  • タイトルを選択します。

  • タイトル名の横にある歯車アイコンをクリックしてタイトル設定に移動し、[タイトル設定] を選択します。

    PF タイトルの設定

  • [API 機能] タブを選択します。

  • [API エンドポイント] フィールドに移動します。

    Google Play デベロッパー コンソールでの API エンドポイントの入力

タイトル API エンドポイントがわかったので、ここで説明する手順に従って OAuth クライアント ID 資格情報を作成します。

  • クライアント ID を作成するときは、クライアント ID の承認済み JavaScript 配信元として API エンドポイントを追加する必要があります。

    承認済み JavaScript 配信元

  • また、承認済みリダイレクト URI として https://oauth.playfab.com/oauth2/google を追加してください。 この手順を実行しないと、redirect_uri の不一致エラーが発生します。

    承認済みリダイレクト URI

クライアント ID を作成すると、次のような画面が表示されます。ここで、生成されたクライアント ID 文字列とクライアント シークレットを取得します。

OAuth クライアント ID作成

これで、Unity の Android 構成ウィンドウに戻り、クライアント ID テキスト ボックスにクライアント ID を貼り付けることができます。

クライアント ID の貼り付け

両方の値が設定されたので、[セットアップ] を選択できます。

セットアップが完了した Android 構成

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 コンテンツ全体をこのフィールドに貼り付けます。

保存する前に、アドオン構成は次のようになります。

PlayFab での Google アドオンのセットアップ

ヒント

必ず設定を保存してください!

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 へのログイン操作の結果を処理するコールバックです。 この時点で、ログインの成功がダッシュ ボードに表示されます!

このガイドがお役に立てれば幸いです。 ご質問がありましたら、お気軽に コミュニティ フォーラム でお尋ねください。