ID とアカウントのリンク

Google Play ゲームサービス認証を使用して、ゲームのユーザー プラットフォーム認証エクスペリエンスを合理化します。Play ゲームサービス SDK を初期化して認証をトリガーします。これにより、別のプラットフォーム認証フローが不要になります。

ユーザー アカウントをリンクして連続性とクロスデバイス プレイを有効にする

プレーヤーは、モバイル、タブレット、PC など、さまざまなデバイスやプラットフォームでお気に入りのゲームをプレイします。これらのプレーヤーの主な期待は、選択したデバイスに関係なく、中断したところからシームレスにゲームプレイを再開できることです。

ユーザーが離脱する大きな原因の一つは、新しいデバイスごとに個別にログインする必要があることです。ユーザーは、不要な中断のないゲーム エクスペリエンスにすぐに没入する必要があります。

シームレスな連続性とクロスデバイス プレイを実現するには、次の 2 つの主要な機能を実装する必要があります。

Play ゲームサービスの認証プロセスでは、プレーヤー ID の柔軟なオプションが提供されます。これらのオプションを使用すると、Play ゲームサービスを既存の ID ソリューションと統合できます。

新しい Play ゲームサービスの統合

既存の Play ゲームサービスとの統合がないゲームの場合、Recall API は、アカウントの関連付けを管理し、ユーザーのゲーム アカウントと Play ゲームサービス アカウント間の接続を保存することで、バックエンドの設定を簡素化します。

Recall API を使用したアカウントのリンク

Recall API は、クロス プラットフォーム ゲームでユーザー アカウントをリンクする場合におすすめのソリューションです。この API は、既存の Play ゲームサービス統合がないゲームや、Play ゲームサービス以外のプラットフォーム認証ソリューションを使用するゲームで特に役立ちます。

Recall API は、アカウントの関連付けを管理することで、ゲームのバックエンド設定を簡素化します。

  • バックエンドの簡素化: この API により、アカウント リンク用のゲームのバックエンド設定が効率化されます。
  • Play 管理の関連付け: ユーザーのゲーム アカウント(サードパーティのアカウントを含む)と Play ゲームサービス アカウントの関連付けが Play に保存されます。
  • 進捗状況の復元: デベロッパーはリコール トークンを生成して Play に送信します。このトークンは、ユーザーのゲームの進捗状況を復元するために取得できます。

Recall API を実装する際、デベロッパーは Recall トークンが不透明な文字列であることを確認する必要があります。これらのトークンに、ゲーマーの機密情報や個人を特定可能な情報(名前、メールアドレス、ユーザー属性など)を含めることはできません。

ゲームでは、ユーザーデータを保護し、セキュリティを維持するために、リコール トークンを生成する際に堅牢な暗号化アルゴリズムを使用する必要があります。

Recall の仕組みについて詳しくは、Recall API をご覧ください。

Recall API 機能を実装するには、Play ゲームサービス Recall API をゲームに統合するをご覧ください。

Recall API を使用して複数のアカウントを管理する

同じユーザーの複数のアカウントを管理する場合は、各アカウントを個別のペルソナとして扱うことができます。このアプローチにより、ユーザーの特定のコンテキストに基づいてエクスペリエンスをカスタマイズできます。

このアプローチを実装する手順は次のとおりです。

さまざまなポリシー オプション(最後のアカウントの自動復元など)が用意されていますが、ユーザーにプロンプトを表示することを強くおすすめします。このプロンプトでは、復元するアカウントを選択するようユーザーに求め、明確で使いやすいエクスペリエンスを提供する必要があります。

既存の Play ゲームサービスとの統合

このセクションでは、プレーヤー アカウントをバインドしてゲームを Play ゲームサービスと統合する方法について説明します。プレーヤー ID を使用して認証済みのプレーヤーを識別し、1 人の Play ゲームサービス ユーザーの複数のゲーム アカウントを管理する方法について説明します。

Player_id でバインドする

プレーヤー ID は、Play ゲームサービスのプレーヤー アカウントの識別子です。ゲームは、Play ゲームサービスを使用してゲームに認証されたプレーヤーのプレーヤー ID を取得できます。

Play ゲームサービス Player_Id でバックエンドが設定されているゲーム、または子供のユーザーのサポートが必要なゲームでは、Player_Id を使用し、ゲームとサードパーティのアカウントを Player_Id でバインドする必要があります。

プレーヤー ID の動作を理解します。

  • ゲーム内で一貫している: ユーザーが同じゲームをプレイする場合、複数のデバイスでプレーヤー ID が一貫して使用されます。
  • ゲーム間で一貫性がない: ユーザーが異なるゲームをプレイする場合、プレーヤー ID は常に一貫しているとは限りません。

詳しくは、次世代のプレーヤー ID をご覧ください。

バインディングを使用してユーザーごとに複数のアカウントを管理する

複数のユーザー アカウントを 1 つの Play ゲームサービス アカウントにリンクするには、テーブルに 1 対多のマッピングを作成します。

「Google でログイン」を使用したクロス プラットフォームの Google ID

Google でログイン(SiwG)は、ゲーム デベロッパーがプレイヤーの名前、メールアドレス、プロフィール写真などのプロフィール情報を安全に受け取ることができる、Google の主要な ID ソリューションです。

「Google でログイン」の主なメリットは、ウェブAndroidiOS など、さまざまなプラットフォームで利用できることです。プレーヤーがすでに知っていて信頼している、高速で安全な使い慣れたログイン エクスペリエンスを提供します。

Google ID トークンの sub フィールドにバインドする

シームレスなクロス プラットフォーム エクスペリエンスを実現するには、ゲームのアカウント システムを一意の Google アカウント ID にリンクする認証戦略を実装します。このアプローチでは、Android での Play ゲームサービス認証を効率化し、iOS やウェブなどの他のプラットフォームでは標準の Google ログイン SDK を使用します。

この戦略の鍵となるのは、Google の ID トークンsub フィールドです。sub(または「サブジェクト」)フィールドは、Google ユーザーのアカウントの一意で永続的な識別子です。この ID を「ブリッジ」として使用して、プレーヤーのすべてのセッションをバックエンドの単一のゲーム アカウントにリンクします。

大まかな流れは次のとおりです。

  • Android の場合: ゲームで Play ゲームサービス SDK を初期化して、Android デバイスで認証を自動的にトリガーします。Play ゲームサービス v2 の統合を構成して、3 つのログイン スコープemailprofileopenid)をリクエストします。これらは、標準の Google でログイン SDK がリクエストするスコープと同じです。これにより、プレーヤーの sub フィールドを含む ID トークンを取得できます。
  • ウェブと iOS の場合: ゲームで標準の ウェブ版の Google でログインiOS と macOS 版の Google でログイン SDK を使用します。ユーザーがログインすると、SiwG SDK はユーザーの sub フィールドも含む ID トークンを提供します。
  • アカウントの関連付け: ユーザーは両方のプラットフォームで同じ Google アカウントを使用してログインするため、受け取る sub フィールドは同一になります。これにより、この sub 値を ID ソリューションの内部ユーザー ID に安全にバインドし、統一されたユーザー エクスペリエンスを実現できます。

Android での統合

Android では、Google Play Games サービス SDK を主な統合ポイントとして使用します。重要なのは、追加のログイン スコープをリクエストするように Google Play ゲームサービス ログイン クライアントを構成することです。これにより、サーバーサイドの認証コードを取得できます。バックエンドでは、このコードを、一意の sub フィールドを含むユーザー情報を含む ID トークンと交換できます。

大まかに言うと、実装には次の処理が含まれます。

  1. 統合プロジェクトでクライアント ID を設定する: 統合する前に、Google Play Console で Play ゲームサービスを設定して、OAuth 2.0 クライアント ID を取得する必要があります。

  2. Play ゲームサービスを設定する: まず、Google Play Console にゲームを追加し、Play ゲームサービス プラットフォーム認証をゲームに統合する必要があります。

  3. [Google でログイン] ボタンを追加する: ゲームのログインページまたはユーザー設定画面に [Google でログイン] ボタンを追加します。このボタンをクリックすると、ログインまたは登録フローが開始されます。このボタンを作成する際は、Google でログインのブランドの取り扱いガイドラインに準拠することをおすすめします。ボタンには、少なくとも「Google」または「Google でログイン」が明確に表示されている必要があります。ガイドラインのリンクには、準拠しており、ゲームで使用できるダウンロード可能な UX アセットも用意されています。

  4. ログイン スコープでサーバー認証コードをリクエストする: プレーヤーがボタンをクリックすると、ゲームは 1 回限りのサーバー認証コードをリクエストします。最も重要な手順は、このリクエストを構成して、EMAILPROFILEOPEN_IDログイン スコープを含めることです。

    この構成方法は、開発環境によって異なります。

  5. 認証コードを交換し、バックエンドで ID トークンを検証する: 前の手順で取得した認証コードをバックエンド サーバーに送信します。サーバーで、標準の OAuth 2.0 コード交換フローのガイドに沿って、コードを ID トークン、アクセス トークン、更新トークンと交換します。ガイドの説明に沿って、サーバーで ID トークンを検証する必要があります。

  6. sub フィールドをバインドする: ID トークンが正常に検証されたら、ペイロードから sub フィールドを抽出します。この sub 値を、ID ソリューションの Google ID の一意のキーとして使用します。

    • データベースにこの sub 値がすでに存在する場合、ユーザーは以前にリンクしています。対応するゲーム アカウントにログインします。

    • この sub 値が存在しない場合、この sub に関連付けられた新しいユーザー アカウントをゲームのアカウント システムで作成するか、ID トークンで提供されたユーザー情報(メールアドレスなど)を照合して、アカウント システム内の既存のユーザー アカウントにリンクできます。

iOS、ウェブ、その他のプラットフォームでの統合

Android、iOS、ウェブ、PC 以外のプラットフォームでは、標準の Google ログイン SDK を使用します。目標は Android フローと同じです。Google ID トークンを安全に取得し、バックエンドに送信して、sub フィールドを使用してアカウントをリンクします。

大まかに言うと、実装には次の処理が含まれます。

  1. クライアントサイドの統合: 公式ドキュメントに沿って、プラットフォーム用の Google ログイン SDK を統合します。これらのガイドでは、[Google でログイン] ボタンのレンダリングから ID トークンの取得まで、クライアントサイドのフロー全体について説明します。

  2. バックエンド ロジック: ID トークン(または認証コード)をバックエンドに送信します。サーバーは、「Android での統合」セクションの手順 4 と 5 で説明されている検証と sub フィールド バインディングのロジックをまったく同じように実行します。

これらのすべての Google でログイン フローの sub フィールドは、Android の Google Play ゲームサービス フローから取得したフィールドと同じであるため(同じ Google アカウントの場合)、このプロセスでは、すべてのプラットフォームでユーザーのアカウントが正常にリンクされます。