チュートリアル: プレーヤー プロフィールを取得

このチュートリアルで学習する内容は次のとおりです:

  • ユーザーと表示名の作成
  • プレイヤー プロフィールの呼び出しの作成
  • プレイヤーの作成時刻と最終ログイン時刻の取得
  • タイトルのプレイヤー プロフィール ビュー制限の設定
  • ログイン操作を使用する、プレイヤー プロフィールの取得

要件

  • PlayFab 開発者アカウント
  • インストール済みの Unity エディターのコピー。 Unity Hub を介して個人的に使用するために Unity をインストールする、または業務用に Unity+ をインストールするには、「Unity のダウンロード」を参照してください。

    注意

    PlayFab Unity3D SDK は、Unity エディター バージョン 5.3 (2015 年 12 月リリース) 以降に対応しています。

  • Unity プロジェクト * これは次のいずれかになります。
    • 最新プロジェクト。 詳細については、「Unity を初めて起動する」を参照してください。
    • ガイド付きチュートリアル プロジェクト。 詳細については、「Unity の使用を開始する」を参照してください。
    • 既存のプロジェクト。
  • PlayFab Unity3D SDK

このチュートリアルでは、タイトルのプレイヤーを作成するための基本的な知識が必要です。これにより、プレイヤーが GetPlayerProfile を実行できます。

また、ゲーム マネージャーを初めて使用する場合は、プロフフィールの制約を設定するために、ゲーム マネージャーのクイックスタートを読むことをお勧めします。

この記事でご紹介する C# サンプルは、Unity SDK 用に記述されています。 Unity SDK では、イベント駆動モデルを使用して非同期のタスクを処理します。 標準の C# または Xamarin C# SDK でサンプル コードを実行するには、非同期タスク モデルを使用するようにコードを変更する必要があります。 修正が必要なメソッドは、署名のメソッド名に非同期が付加されています。 たとえば、Unity SDK の SetObject は、標準 C# SDK では SetObjectAsync になります。 詳細については、「MSDN ガイド - async と await を使った非同期プログラミング」を参照してください。

ユーザーと表示名の作成

最初にプレイヤーを作成し、ユーザーに表示名を追加します。 この例では、UnicornTossMaster という表示名の新しいユーザーを作成します。

void CreatePlayerAndUpdateDisplayName() {
    PlayFabClientAPI.LoginWithCustomID( new LoginWithCustomIDRequest {
        CustomId = "PlayFabGetPlayerProfileCustomId",
        CreateAccount = true
    }, result => {
        Debug.Log("Successfully logged in a player with PlayFabId: " + result.PlayFabId);
        UpdateDisplayName();
    }, error => Debug.LogError(error.GenerateErrorReport()));
}

void UpdateDisplayName() {
    PlayFabClientAPI.UpdateUserTitleDisplayName( new UpdateUserTitleDisplayNameRequest {
        DisplayName = "UnicornTossMaster"
    }, result => {
        Debug.Log("The player's display name is now: " + result.DisplayName);
    }, error => Debug.LogError(error.GenerateErrorReport()));
}

コンソールの出力は、次のように表示されます。

Successfully logged in a player with PlayFabId: SOME_PLAYFAB_ID
The player's display name is now: UnicornTossMaster

プレイヤー プロフィールの呼び出しの作成

次の手順では、プレイヤーの基本的なプロファイルを作成します

次の例では、基本的な GetPlayerProfile の呼び出しを使用します。

void GetPlayerProfile(string playFabId) {
    PlayFabClientAPI.GetPlayerProfile( new GetPlayerProfileRequest() {
        PlayFabId = playFabId,
        ProfileConstraints = new PlayerProfileViewConstraints() {
            ShowDisplayName = true
        }
    },
    result => Debug.Log("The player's DisplayName profile data is: " + result.PlayerProfile.DisplayName),
    error => Debug.LogError(error.GenerateErrorReport()));
}

応答には、PlayerProfileModel オブジェクトが含まれており、プレイヤーの表示名 UnicornTossMaster が含まれています。

プレイヤーの作成時刻と最終ログイン時刻の取得

PlayerProfileModel オブジェクトには、プレイヤーについての適切な量のデータがあります。 前の手順では、GetPlayerProfile を発行し、受け取った応答には表示名の情報のみが含まれていました。

次の手順では、プレイヤーのプロフィール データを さらに 取得します。 これを行うには、PlayerProfileViewConstraints 要求パラメータで追加のフィールドのある GetPlayerProfile を呼び出します。

次の C# の例では、手順2の GetPlayerProfile メソッドを変更し、GetPlayerProfile を呼び出して、ProfileConstraints のフラグを設定し、Created フィールドと LastLogin フィールドを要求します。

注意

この手順での呼び出しは失敗します。

void CreatePlayerAndUpdateDisplayName(string playFabId) {
    PlayFabClientAPI.GetPlayerProfile( new GetPlayerProfileRequest() {
        PlayFabId = playFabId,
        ProfileConstraints = new PlayerProfileViewConstraints {
            ShowDisplayName = true,
            ShowCreated = true,
            ShowLastLogin = true
        }
    },
    result => Debug.Log("The player's profile Created date is: " + result.PlayerProfile.Created),
    error => Debug.LogError(error.GenerateErrorReport()));
}

この時点でこのサンプル コードを実行すると、 Error Code 1303でエラーが返されます。 RequestViewConstraintParamsNotAllowedは、タイトルに現在設定されている制限内での JSON 出力の Invalid view constraints で始まるエラー メッセージです。

タイトルのプロフィール制限の設定で、CreatedLastLogin を表示する機能がまだ設定されていないため、エラー が発生しました。

タイトルのプレイヤー プロフィール ビュー制限の設定

GetPlayerProfile API を呼び出してより多くのデータを取得するには、データに関する制限を使用できるように設定する必要があります。 これらの設定は、ゲーム マネージャーのタイトル設定にあります。

既定では、ALLOW CLIENT ACCESS TO PROFILE PROPERTIES: では表示名だけが有効で、それにより表示名値を取得することができます。

タイトルの追加制限を設定するには:

  • ゲーム マネージャー で、タイトルを選択します。
  • 左上隅の歯車アイコンを選択し、[タイトルの設定] を選択します。
  • [クライアント プロフィール オプション] タブを選択します。
  • ProfileConstraints[Created][LastLogin] の両方を有効にするには、[作成日][最終ログイン時刻] を確認し、[クライアント プロファイル オプションの保存] を選択します。

PlayFab 設定 * クライアント プロフィール オプション * プロフィール プロパティへのクライアント アクセスの許可

ここで、1CreatePlayerAndUpdateDisplayName を呼び出すと、ユーザーの作成時刻、最後のログイン、UnicornTossMaster の表示名に関するデータを含む PlayerProfileModel オブジェクトが返されます。

ログイン操作を使用する、プレイヤー プロフィールの取得

ほとんどの場合、プレイヤー プロフィールのデータは、プレイヤー ログイン後すぐに取得することになります。 PlayFab API を使用すると、ログイン呼び出しと呼び出しを組み合わせて 1 回の呼び出しでプレイヤー プロファイルを取得することができます。

次の例では、ログイン要求を通じてプロフィール情報を取得する方法を示しています。例として、LoginWithCustomId を使用します。

注意

これは、すべて ログイン メカニズムで動作しています。

void CreatePlayerAndUpdateDisplayName(string customId) {
    PlayFabClientAPI.LoginWithCustomID( new LoginWithCustomIDRequest() {
        CustomId = customId,
        // Define info request parameters
        InfoRequestParameters = new GetPlayerCombinedInfoRequestParams() {
            // And make sure PlayerProfile is included
            GetPlayerProfile = true,
            // Define rules for PlayerProfile request
            ProfileConstraints = new PlayerProfileViewConstraints() {
                // And make sure that both AvatarUrl and LastLogin are included.
                ShowAvatarUrl = true,
                ShowLastLogin = true,
            }
        }
    },
    result =>
    {
        // Extract the data you have requested
        var avatarUrl = result.InfoResultPayload.PlayerProfile.AvatarUrl;
    },
    error => Debug.LogError(error.GenerateErrorReport()));
}