アカウント リンクのクイックスタート
このアカウント リンクのクイックスタートでは、複数のデバイスとログイン メカニズムにアカウントをバインドする方法について説明します。
1 つの PlayFab アカウントは、多くのデバイスやログイン資格情報によりアクセスできます。 チュートリアル「ログインの基本とベスト プラクティス」で説明されているように、ユーザー認証には 2 つの形式があります。
- 匿名
- 回復可能
既存の匿名アカウントに回復可能なログインを追加する
最初のログインには匿名ログインを使用するのが一般的です。 プレイヤーは抵抗を感じずにゲームに参加できます。
しかしプレイヤーがゲームに対して支払いを行うようになれば、回復可能なログイン手段を追加するようプレイヤーに促す必要があります。これにより、デバイスに故障または他の問題が発生した場合でも、アカウントが回復可能になります。
このセクションでは、匿名アカウントへの回復可能なログイン メカニズムの追加について説明します。
注意
匿名ログインは、プレイヤーが抵抗を感じずにログインできる主要な手段であるため、依然として有用です。 プラットフォーム固有の機能を使用しているアカウント、または第 2 の匿名デバイスにリンクしているアカウントを回復しようとする場合に、多くのプレイヤーが再度使用するのはこのオプションのみです。
このチュートリアルでは、前記の図の下部にあるセル AddUsernamePassword、LinkWithFacebook、LinkWithGoogle に注目します。 これらは、回復可能なログイン メカニズムで利用可能な多くのオプションの一部です。
-
AddUsernamePassword は、LoginWithPlayFab と LoginWithEmailAddress のいずれかまたは両方を有効にするのに使用します。 これらのオプションは、PlayFab を直接使用してユーザー名/メール アドレス/パスワードの資格情報を保存します。 プレイヤーが自分のアカウントを回復するには、ゲーム、Web サイト、またはカスタマー サービスから次を起動します。
- メール アドレスの場合、SendAccountRecoveryEmail。 プレイヤーが偽のメール アドレスを入力しても、今までどおり、PlayFab ゲーム マネージャーを使用してプレイヤーのメール アドレスを更新できます。ただし、カスタマー サービスの担当者が一般的なソーシャル エンジニアリングによる詐欺を警戒する訓練を受けていて、アカウントの実際の所有者のメール アドレスのみを確実に更新することが重要です。
サード パーティーの回復可能なログイン メカニズムでは、適切な SDK またはサード パーティーの API 呼び出しを介して、ユーザーにログインが求められます。 PlayFab にアカウントをリンクする手順は、一般に次のようになります。
- 最初に、ユーザーにそのサービスへのログインを求めます (詳細は、「ログインの基本とベスト プラクティス」を参照)。
- ログインすると、サービスにより何らかのトークンが提供されます。これは PlayFab に渡すことができます。
- これにより、PlayFab は、そのサービスでのユーザーの資格情報を意識せずに、安全にそのアカウントにリンクできます。
注意
一部のサービスでは、ゲームがそのサービスに認証の呼び出しを行うために、アプリケーション ID など、いくつかの追加情報を PlayFab で保持する必要があります。 タイトル設定で使用されるサービスについては、「アドオン マーケットプレース」ページを必ず参照してください。
ベスト プラクティス
匿名ログインを使用して、抵抗を感じさせずに新しいプレイヤーを作成します。 チュートリアル フェーズの後、アカウントに回復可能な認証情報をリンクする方法を、いくつかプレイヤーに丁寧に推奨します。
サード パーティーの認証システムを使用している場合は、そのサービスから (API の呼び出しまたは SDK 関数により) 適切なトークンを取得し、次の該当する PlayFab API を呼び出して、そのサービスからのプレイヤー アカウントを、プレイヤーの PlayFab アカウントにリンクします: LinkFacebookAccount、LinkGameCenterAccount、LinkGoogleAccount、LinkKongregate、LinkSteamAccount、LinkTwitch、LinkWindowsHello
。
ベスト プラクティス
プライバシーの観点から、ユーザーの認証情報は保存または格納しないでください (これは COPPA 準拠のために必要な多くの手順の 1 つでもあります。また、保存が必要なタイトルがある場合は、準拠していることを確認するため、必ず法律顧問にご相談ください)。
PlayFab の資格情報を使用しているか、またはサード パーティーの API を直接呼び出している場合には、できるだけ速やかにログイン情報をメモリから削除する必要があります。 一般に、サード パーティーの SDK ではこれが考慮されています。
識別可能な情報または安全な情報を、必要以上に長くメモリに保持しないでください。また、ファイルまたはリモートの場所に保存しないでください。 PlayFab API は、最低限必要な情報のみを利用するよう設計されています。
新しいデバイスを既存の回復可能なアカウントに追加する
PlayFab では、複数のログインおよびデバイスから同じアカウントにアクセスできます。 適切に設定を行った後、プレイヤーは任意のデバイスでゲームをプレイすることができます。また、そのデバイスを不使用にして、新しいデバイスを選択しても、(そのデバイスが異なる種類、ブランド、プラットフォーム、または OS であっても) 同じゲームを再開することができます。その際、すべてのデータは無傷で使用できます。
要件
プレイヤーは、2 つのデバイスを所有している必要があります。
- デバイス 1 - アカウントを使用して設定を行い、回復可能な資格情報が既に正しく設定されています。 2 つ目のデバイスがアカウントにバインドされていなければなお理想的です。 このプロセスは、ログイン メカニズムとして 2 つ目のデバイスの ID のみを持つアカウントを孤立させ、回復不能にします。 ただし、PlayFab では、このような場合を安全に検出し、警告するためのオプションがあります。
- このシナリオでは、すべてのアクティビティはデバイス 2 で実行されます。最初に、2 つ目のデバイスで、ユーザー ログイン フローを逆に実行する必要があります。 回復可能なメカニズムを使用してログインするためのオプションをユーザーに提供する必要があります。また、デバイス ID により自動的にログインしない必要があります。
この手順に失敗すると、プレイヤーは不便な経験をすることになります。アカウントが失われたことが警告され、プレイヤーは決してアカウントを作成しようとはしません。
さまざまな条件でのフローは次のとおりになります。すべての場合において、プレイヤー アカウントは 1 つのみ存在し、回復可能なアカウントがリンクされているものとします。
デバイス 1 の状態: デバイス ID がプレイヤーのアカウントにバインドされています。 デバイス 2 の状態: デバイス ID がプレイヤーのアカウントにバインドされていません。
-
デバイス 2 で、(回復可能なアカウント認証情報を使用して) プレイヤー アカウントにサインインした後、GetPlayerCombinedInfo を呼び出します。
- その情報により返されたデバイスの種類に対して、最後にサインインしたデバイス ID が result.InfoResultPayload.AccountInfo で返されます。
デバイス 2 はまだこのプレイヤー アカウントにリンクされていないため、関連するデバイス ID (AccountInfo.IosDeviceInfo、AccountInfo.AndroidDeviceInfo など) はデバイス 2 の ID と一致しません。
デバイス 1 の状態: デバイス ID がプレイヤーのアカウントにバインドされています。 デバイス 2 の状態: 回復可能な資格情報でログインされていますが、デバイス ID がプレイヤー アカウントにバインドされていません。
デバイス 2 がこのアカウントにバインドされていないことは確認済みのため、このアカウントへのバインドを試みます。
- 適切な LinkAndroidDeviceID、LinkIOSDeviceID、またはデバイス固有の他の API を呼び出します。
- 正常に完了したら、通常のゲームプレイを再開します。
- ただし、他の API 呼び出しと同様に、エラーの発生に備えてください。 特に、デバイスが既にアカウントにリンクされているというエラーについて考慮してください。
- このような状況では、"このデバイスをこのアカウントにバインドしますか" というメッセージを表示して、プレイヤーに入力を促します。
- 継続すると他のアカウントが失われる可能性があるという情報を、必ず表示してください。
- プレイヤーがこの警告を受け入れたら、プロパティ ForceLink を True に設定したリンク要求を再送信します。
- これにより、古いアカウントからデバイス 2 ID がリンク解除され、新しいアカウントにバインドされます。古いアカウントに他のログイン メカニズムがリンクされていない場合には、そのアカウントは永久に孤立する可能性があります。
ベスト プラクティス
CloudScript または PlayStream イベントを使用して、破棄されたアカウントの情報をどこかに記録し、プレイヤーが間違えた場合に、カスタマー サービスの担当者がそのアカウントを回復できるようにします。
注意
PlayFabId をクラウドベースのログ ファイルに書き出すだけでも、そのプレイヤーのアカウントを救済できます。
デバイス 1 の状態: デバイス ID がプレイヤーのアカウントにバインドされています。 デバイス 2 の状態: デバイス ID がプレイヤーのアカウントにバインドされています。
この時点では、両方のデバイスが同じアカウントでプレイします。両方のデバイスでは、抵抗を感じずに安全にログインできます。
抵抗を感じないデバイス ID を既存の回復可能なアカウントにバインドする
このシナリオは前記のシナリオと似ていますが、アカウントは回復可能な資格情報を使用して作成されています。
既存のゲームのログイン画面を、後で匿名ログインにバインドして、抵抗を感じないログインへと変換することができます。 次の手順は、上記の条件とほぼ同じですが、単一のデバイス (これは、単純に上記フローのデバイス 2 です) のみを使用します。
デバイス の状態: デバイス ID がプレイヤーのアカウントにバインドされていません。
デバイスを使用して回復可能なログインを実行後、GetPlayerCombinedInfo を呼び出します。 再度、result.InfoResultPayload.AccountInfo により返される情報により、デバイス ID が、バインドされたデバイス ID と一致するかどうかを確認します。
デバイスはこのアカウントにサインインしたことがないため、対応するデバイス ID (AccountInfo.IosDeviceInfo、AccountInfo.AndroidDeviceInfo など) はデバイス ID と一致しません。
デバイス の状態: 回復可能な資格情報でログインされていますが、デバイス ID がプレイヤー アカウントにバインドされていません。
デバイスがこのアカウントにバインドされていないため、バインドを試みることができます。 適切な LinkAndroidDeviceID、LinkIOSDeviceID、またはデバイス固有の他の API を呼び出します。
正常に完了したら、通常のゲームプレイを再開します。
ただし、もう一度。エラーの発生に備えてください。 特に、デバイスが既にアカウントにリンクされているというエラーについて考慮してください。 このような状況では、"このデバイスをこのアカウントにバインドしますか" というメッセージを表示して、プレイヤーに入力を促します。
継続すると他のアカウントが失われる可能性があるという情報を、必ず表示してください。 プレイヤーがこの警告を受け入れたら、プロパティ ForceLink を True に設定したリンク要求を再送信します。
これにより、古いアカウントからデバイス ID がリンク解除され、新しいアカウントにバインドされます。古いアカウントに他のログイン メカニズムがリンクされていない場合には、そのアカウントは永久に孤立する可能性があります。
ベスト プラクティス:
CloudScript または PlayStream イベントを使用して、破棄されたアカウントの情報をどこかに記録し、プレイヤーが間違えた場合に、カスタマー サービスの担当者がそのアカウントを回復できるようにします。 PlayFabId をクラウドベースのログ ファイルに書き出すだけでも、そのプレイヤーのアカウントを救済できます。
デバイス の状態: デバイス ID がプレイヤーのアカウントにバインドされています。
この時点では、回復可能な資格情報ではなく、抵抗を感じないログインがデバイスに使用できます。
他のベスト プラクティス
上記の手順では、ログインする前にユーザーに入力が求められます。 抵抗を感じないログインでは、プレイヤーは最初、何も求められずにログインします。 以下は、理想的な妥協方法の提案です。
抵抗を感じないログイン API: 抵抗を感じないログインにはすべて、CreateAccount と言う要求パラメーターがあります。
例:
- AndroidRequest.CreateAccount
- IosRequest.CreateAccount. 次のガイドラインに従い、このプロパティに true または false を選択します。
起動時:
ログイン時には、CreateAccount=false として、抵抗を感じないログインをゲームで直ちに試行します。 これが成功した場合、このプレイヤーはこのデバイスを使用して既にログインしたことがあるため、直接ゲーム場面に安全に移行できます。 この呼び出しのエラー コールバックを取得して、これに従い最初のログイン オプションを表示します。
最初のログイン画面: 抵抗を感じないログイン機能が使用できるデバイスの場合、この画面には [今すぐプレイ] ボタンがあります。これは、Facebook、Twitch、Google、その他の回復可能なログイン オプションを使用して既存のアカウントにログインするボタンの横に配置します。 [今すぐプレイ] ボタンでは、CreateAccount=true にして抵抗を感じないログインをアクティブにします。
ログアウト: 最初のログイン画面に戻る [ログアウト] を提供しますが、抵抗を感じないログインを自動的にアクティブにはしません。 これにより、回復可能なオプションを使用してログインし、デバイスをそのアカウントにバインドすることにより、デバイスのバインド済みのアカウントをユーザーが破棄できるようにします。
以上により、ほとんどの不便なシナリオを避けることができます。ユーザーは、複数のデバイスを同じアカウントにバインドする場合に、アカウントを破棄することが求められます。