Unity Player Accounts

概要

Unity Player Accounts は、複数のゲーム、デバイス、プラットフォームをまたいで永続性をサポートする、Unity の包括的なサインインソリューションです。ユーザーフローのユーザー体験、E メールとパスワード、ソーシャルサインインオプション、データのアクセスおよび削除フローを含んだ、エンドツーエンドなアカウントシステムとなっています。

Unity Player Accounts は Unity Gaming Services と統合されており、Anonymous、Apple、Google、Facebook、Steam などと並ぶもう 1 つの ID プロバイダーとして Authentication でサポートされています。シングルサインオン (SSO)、組織レベルのプレイヤープール、また、クロスゲーム、クロスデバイス、クロスプラットフォームのゲームが利用できる利点があります。

技術的特徴説明
Unity Gaming Services およびエディターと統合Player Accounts は、Unity Gaming Services や Unity のエコシステムに対応したサインインおよび ID ソリューションです。Authentication とシームレスに統合されており、組織レベルのプレイヤー ID など、追加の機能も提供されます。
クロスプラットフォームおよびクロスデバイスプレイヤーは、iOS、Android、Windows、Mac などのさまざまなプラットフォームでゲームにサインアップおよびサインインできます。
クロスゲーム組織レベルのプレイヤー ID を利用し、すべてのゲームにわたって永続的なプレイヤープロファイルを維持できます。
簡素化されたユーザーサインアップおよびサインイン手順プレイヤーは、E メールとパスワード、Google や Apple などのソーシャルアカウントなど、好みに応じた方法でアカウントへのサインアップやサインインを実行できます。
フリクションレスなサインイン体験開始時のアカウントに関する煩わしさを最小限に抑えるために、匿名で開始したプレイヤーが後で Player アカウントにアップグレードしても、進行状況が失われないようにすることができます。また、シングルサインオン (SSO) を使用すれば、一度サインインしたプレイヤーは認証情報を再入力しなくても、Player Accounts 対応のすべてのゲームにアクセスできます。
1 回の統合で完結ブラウザーベースのサインアップとサインインのフローは、ゲームのインテグレーションや更新がなくても、自動的に更新され新機能が反映されます。開発者は、認証ソリューションを再統合する必要なしにゲームの作成や運営に集中できます。一度統合すれば、Player Accounts は常に最新に維持され、最新のセキュリティの改善点と機能が適用されます。

使用の準備

SDK のインストール

Unity の最新の Authentication パッケージをインストールするには

  1. Unity エディターで、Window (ウィンドウ) > Package Manager (パッケージマネージャー) を開きます。
  2. Package Manager で、Unity Registry (Unity レジストリ) のリストビューを選択します。
  3. Authentication を検索するか、パッケージリスト内で見つけます。
  4. このパッケージを選択し、Install を選択します。

詳細については、Package Manager のドキュメントを参照してください。

Unity Player Accounts の設定

Unity Cloud Dashboard で直接、Unity Player Accounts を設定できます。

Unity Player Accounts を使用する前に、以下が揃っていることを確認してください。

名前説明
利用規約のリンクアプリケーションの利用規約。アプリケーションのサインインプロセス (初回サインイン) の同意の手順でリンクを表示します。ノート:このリンクは初期設定では任意ですが、公開する前に利用規約のリンクを指定する必要があります。
プライバシーポリシーのリンクアプリケーションのプライバシーポリシー。アプリケーションのサインインプロセス (初回サインイン) の同意の手順でリンクを表示します。ノート:このリンクは初期設定では任意ですが、公開する前にプライバシーポリシーのリンクを指定する必要があります。
OAuth クライアント名OAuth クライアントの名前。これは同意の手順でユーザーに表示されるため、統合するアプリケーションの名前など、認識できる名前にする必要があります。
プラットフォームサポートされるプラットフォーム。Unity Player Accounts は iOS/Android および Windows をサポートしています。

ゲームを公開する前に

Unity のコンプライアンスとブランドガイドラインを確認します。

  • プレイヤーがアプリケーションと Unity Player アカウントのデータ削除要求およびデータ開示要求を行う手段を提供する必要があります。
  • Unity Player Accounts のアカウント削除ページ へのリンクを含めます。
  • データ開示やその他のプライバシー要求のための Unity Player Accounts のプライバシーサポート E メール へのリンクを含めます。
  • データ開示やその他のプライバシー要求のための E メール へのリンクを含めます。
  • Unity の利用規約 を常に遵守する必要があります。
  • エンドユーザーに対して適切な開示を行い、適用されるすべてのプライバシーとデータ保護に関する法律および規制を遵守し、Unity Player Accounts サービスの使用に必要な権利を Unity に付与する、目立つように配置されたプライバシーポリシーを常に維持、表示、遵守する必要があります。

利用規約とプライバシー

Unity Cloud Dashboard に利用規約とプライバシーのリンクが表示されていることを確認します。

SDK のインテグレーション

Unity Player Accounts サインインの設定

パッケージをインストールした後、エディターメニューで Services (サービス) > Authentication (認証) > Player Account Settings (プレイヤーアカウント設定) を選択します。

ノート: このアセットは Assets/Resources の下で作成されました。

オンボーディング後に取得した以下の値を追加します。

  • クライアント ID
  • Scope (スコープ) (任意。All または Empty はすべての許可されたスコープを意味します)
  • Use Custom Deep Link Uri (カスタムディープリンク URI を使用) (任意。デフォルトのディープリンク URI をオーバーライドします)

ノート: 登録された URI が以下の指定された形式に従っている限り、認証フローはリダイレクト URI を設定しなくても動作します。

  • デスクトップ/スタンドアロン: http://localhost/callback
  • Android/IOS のデフォルトディープリンク URI: unitydl://com.unityplayeraccounts.{unity-project-id}

Unity Player Accounts のサンプル

ノート: このサンプルは標準の Unity Input システム上に構築されています。Input Manager または両方の入力システムを有効にしてください。Unity エディターで、Edit (編集) > Project Settings (プロジェクト設定) > Player (プレイヤー) > Other Settings (その他の設定) > Active Input Handling (アクティブな入力処理) に移動します。

  • Window (ウィンドウ) > Package Manager (パッケージマネージャー) を選択してサンプルをインポートします。Authentication (認証) を探し、Samples (サンプル) で Import (インポート) を選択します。

  • Assets (アセット) > Samples (サンプル) > Authentication (認証) > [パッケージバージョン] > UI Example (UI サンプル) > UnityPlayerAccountsUIExample にあるサンプルシーンを開きます。

Unity Authentication サービスとの統合

Unity Authentication 用に、Unity Player アカウント ID プロバイダーを設定します。

  1. Unity エディターメニューで、Edit > Project Settings... (編集 > プロジェクト設定...) を選択し、ナビゲーションメニューから Services > Authentication (サービス > Authentication) を選択します。
  2. Go to Dashboard (ダッシュボードに移動) を選択して、Authentication ID プロバイダーのウェブページを開きます。
  3. ウェブページで Add Identity Provider (ID プロバイダーを追加) を選択し、Unity Player Accounts を選択します。
  4. プロバイダーを設定し、ポップアップウィンドウで Add provider (プロバイダーを追加) を選択します。
  5. Unity エディターの Services (サービス) > Authentication (認証) に戻り、Refresh (更新) を選択します。そうすると、Unity Player Accounts ID プロバイダーが表示されます。
  6. Unity エディターで Services (サービス) > Authentication (認証) > Player Account Settings (プレイヤーアカウント設定) に移動し、クライアント ID が正しく設定されていることを確認します。
  7. 先ほどインポートしたパッケージサンプルシーン UnityPlayerAccountsUIExample を実行します。

ノート: SignedIn イベントをサブスクライブする必要があります。これにより、ユーザーが Unity Player アカウントに正常にサインインし、必要なアクセストークンが受け取られたときに、サインインメソッドが呼び出されるようになります。

void Awake()
{
   PlayerAccountService.Instance.SignedIn += SignInWithUnity;
}

戻ってきたプレイヤーのサインインまたは新しいプレイヤーの作成

SignInWithUnityAsync メソッドを使用して、以下のいずれかを行います。

  • Unity Player Accounts の認証情報を使用して新しい Unity Authentication プレイヤーを作成する。
  • Unity Player Accounts の認証情報を使用して既存のプレイヤーをサインインする。
async Task SignInWithUnityAsync(string accessToken)
        {
            try
            {
                await AuthenticationService.Instance.SignInWithUnityAsync(accessToken);
                Debug.Log("SignIn is successful.");
            }
            catch (AuthenticationException ex)
            {
                // Compare error code to AuthenticationErrorCodes
                // Notify the player with the proper error message
                Debug.LogException(ex);
            }
            catch (RequestFailedException ex)
            {
                // Compare error code to CommonErrorCodes
                // Notify the player with the proper error message
                Debug.LogException(ex);
            }
        }

プレイヤーを匿名から Unity Player アカウントへと更新する

匿名認証を設定した後、プレイヤーが匿名からアップグレードし、Unity Player アカウントを作成してサインインすることを希望する場合は、ゲームのプレイヤーにプロンプトを表示し、Unity Player Accounts サインインをトリガーして Unity Player Accounts からアクセストークンを取得するよう求める必要があります。その後、LinkWithUnityAsync API を呼び出して、プレイヤーを Unity Player アカウントアクセストークンにリンクします。

キャッシュされたプレイヤーが SDK に存在する場合は、キャッシュされたプレイヤーを Unity Player アカウントにリンクできます。

  1. SignInAnonymouslyAsync を使用して、キャッシュされたプレイヤーのアカウントにサインインします。
  2. LinkWithUnityAsync を使用して、キャッシュされたプレイヤーのアカウントを Unity Player アカウントにリンクします。

キャッシュされたプレイヤーについて詳しくは、キャッシュされたプレイヤーのサインイン を参照してください。

async Task LinkWithUnityAsync(string accessToken)
        {
            try
            {
                await AuthenticationService.Instance.LinkWithUnityAsync(accessToken);
                Debug.Log("Link is successful.");
            }
            catch (AuthenticationException ex) when (ex.ErrorCode == AuthenticationErrorCodes.AccountAlreadyLinked)
            {
                // Prompt the player with an error message.
                Debug.LogError("This user is already linked with another account. Log in instead.");
            }

            catch (AuthenticationException ex)
            {
                // Compare error code to AuthenticationErrorCodes
                // Notify the player with the proper error message
                Debug.LogException(ex);
            }
            catch (RequestFailedException ex)
            {
                // Compare error code to CommonErrorCodes
                // Notify the player with the proper error message
                Debug.LogException(ex);
            }
        }

Unity Player アカウントのリンク解除

UnlinkUnityAsync API を使用して、プレイヤーが自身の Unity Player アカウントをリンク解除できるようにします。リンク解除後、そのアカウントが他のどの ID にもリンクされていない場合、そのアカウントは匿名アカウントに遷移します。

async Task UnlinkUnityAsync(string idToken)
{
   try
   {
       await AuthenticationService.Instance.UnlinkUnityAsync(idToken);
       Debug.Log("Unlink is successful.");
   }
   catch (AuthenticationException ex)
   {
       // Compare error code to AuthenticationErrorCodes
       // Notify the player with the proper error message
       Debug.LogException(ex);
   }
   catch (RequestFailedException ex)
   {
       // Compare error code to CommonErrorCodes
       // Notify the player with the proper error message
       Debug.LogException(ex);
   }
}