PC で一致しないストア アカウントを処理するシナリオ
運用環境での PC タイトル上の XStoreContext
は常に、現在 Microsoft Store アプリにサインインしている Microsoft アカウント (MSA) にリンクされます。
XStore API の結果とトランザクションすべての対象範囲が、このアクティブにサインインしている MSA になります。
ただし、このアカウントは、ユーザーが Microsoft Store アプリでサインアウトして別のアカウントでサインインすることで、実行中のゲームへの通知なしで、いつでも切り替えることができます。
また、ユーザーが PC でゲームをプレイ中、Xbox サービスアカウントを購入アカウントにするように設定した場合は、Xbox アプリによって Microsoft Store アカウントを切り替えることができます。
同様に、ゲームによって Xbox サービスサインイン フローが提示されたとき、Xbox サービスアカウントを Microsoft Store アカウント以外のアカウントに切り替えることができます。
アカウント不一致のシナリオは、意図的なものである可能性があります。
ゲームをプレイしているアカウントと、Microsoft Store に現在サインインしているアカウントの間でのアカウント切り替えや不一致を適切に設計および処理しないと、ユーザーが購入したゲーム内アイテムを受け取れず不満を感じたり、コストがかかるカスタマー サポートの関与が必要になったりすることがあります。
次の記事では、あるユーザー アカウントでゲームにサインインし、別のアカウントでストアにサインインするシナリオに対する計画作成、処理、影響の軽減の方法について説明します。
注意
上記のシナリオは、Xbox 本体の問題ではありません。
XStoreContext
は常に、コンテキストの作成元の XUser
アカウントに関連付けられています。
したがって、XStore API とトランザクションは常に、ゲームのアクティブ ユーザーである XUser
に関連付けられます。
注意
開発者サンドボックスでテストする場合、これは有効ではなく、ストアの資格情報は常に Xbox アプリにサインインしたアカウントに関連付けられます。 そのため、このシナリオは、運用環境およびリテール環境でのみテストおよび確認できます。 詳細については、「アカウント不一致のシナリオのテスト」をご覧ください。
一般的なガイダンス
Xbox サービス対応ゲーム (つまり、Xbox サービスアカウントを使用してユーザーがプレイするゲーム) でない場合、そのゲームでは、購入アカウント (Microsoft Store にサインインしている MSA) がいつでも変更可能であることに対して計画を立て、認識する必要があります。 したがって、ゲーム内消耗品アイテムが購入された場合、そのゲームは直ちにコマース フローを開始し、購入された消耗品アイテムを照会して、そのアイテムをフルフィルメント (消費) する必要があります。 その後、ゲームまたはタイトル サービスは、そのユーザーの消耗品アイテムの残量を更新し、追跡します。 これは、モバイル ゲームのコマースに似ています。つまり、プライマリ デバイスのアカウントが支払いを行いますが、ゲーム アカウントが、それがどのようなアカウントでも、購入したゲーム内クレジットを取得します。
より詳細なガイダンスについては、「サービスから消費型製品を管理する」を参照してください。
Xbox サービスをサポートするゲームは、Xbox サービスと Microsoft Store の間でのアカウント (MSA) 不一致をサポートするかユーザーに対してアカウントの同期を強制するかを決めて、コンテンツのゲーム内購入と使用を有効にする必要があります。 Windows から報告された利用統計情報は、Xbox サービス ユーザーの 10 から 15% が、Microsoft Store アプリへのサインインに、Windows セッション内の Xbox サービスとは異なる MSA を使っていることを示しています。 したがって、このユーザー グループのために、アカウント不一致のシナリオをサポートすることをお勧めします。 ただし、Xbox サービスアカウントも購入アカウントであるという前提に基づいて、ゲームの設計、システム、コマースが構築されている場合は、Xbox サービスと Microsoft Store の間で MSA アカウントが同期していることを確認する手順があります。 アカウントを確実に同期する必要があるゲームの例の 1 つが、同じゲーム サービスを使用して、Xbox 本体と Windows PC の両方のバージョンをサポートしているゲームです。 同様に、Xbox で最初にリリースされ、PC に移植されたゲームの設計は、プレイ アカウントとコマース ID が同じであることが前提になっている可能性があります。 Xbox サービス対応のゲーム内でのアカウント不一致の処理に関する具体的な影響と問題については、以下のセクションで説明します。
シナリオ例
あなたの Microsoft アカウント (MSA) が、Windows PC と Microsoft Store アプリにサインインしています。 あなたは Microsoft Store 経由で Xbox サービス対応のゲームを購入 (または、PC Game Pass からダウンロード) し、ゲームをインストールします。 ゲームを起動するときに、あなたは Xbox アカウントを選択します。その資格情報 (MSA) は、Microsoft Store にサインインしているアカウントのものと同じです。 ゲーム内消耗品アイテムを購入すると、自分のアカウントに課金され、その消耗品アイテムの数量は、Microsoft Store サービスの貸方に記入されます。 このゲームまたはゲームのバックエンド サービスは、あなたの資格を照会し、消耗品アイテムを確認およびフルフィルメントして、アイテムまたは価値を、あなたのゲーム内アカウントに付与します。
その後、あなたのお子様が、ゲームをプレイするために、独自の Microsoft アカウントを使用してゲーム内で Xbox サービスにサインインします。
Microsoft Store アプリは Microsoft アカウントにサインインされたままです。
お子様は、上記で購入したものと同じ消耗品アイテムのゲーム内購入を開始します。
ここでも、あなたの Microsoft アカウントに課金され、Microsoft Store サービスの貸方に記入されます。
ゲームまたはバックエンド サービスは、XStoreContext
に基づいて新しい資格を照会し、あなたのアカウントのストア結果内で消耗品アイテムを確認します。
ゲームまたはバックエンド サービスは、消耗品アイテムをフルフィルメントし、アクティブ プレイヤー (ここでは、あなたのお子様のアカウント) にアイテムを付与します。
最終的には、あなたのアカウントに課金されますが、ゲーム内アイテムや価値は、あなたのアカウントではなく、あなたのお子様のアカウントに付与されます。
X トークンのサーバー間の問題
Xbox サービスを使用するタイトルでは、X トークンを使用して、ゲームをプレイしているユーザーの代わりに、バックエンド サービスから呼び出しを行うことができます。 特に、ユーザーが所有しているアイテムを照会し、消耗品アイテム コマース システムを実装するためのベスト プラクティスに従う場合です。 ただし、代理認証 X トークンは、ゲームをプレイしている Xbox サービスユーザー アカウントに関連付けられています。 したがって、Microsoft Store API に対するサーバー間呼び出しに X トークンを使用すると、前述したアカウント不一致のシナリオに対応できなくなります。 クエリの結果によって返されるのは、Xbox サービス アカウントの MSA がMicrosoft Store にサインインしているときに購入したものだけです。
ユーザー Store ID を使用したサーバー間認証
アカウント不一致のシナリオに対応するために、Microsoft Store API へのサービス間呼び出しでは、認証にユーザー Store ID を使用する必要があります。 ユーザー Store ID は、クライアントから取得したセキュリティで保護されたトークンで、その時点で Microsoft Store にサインインしているアカウントの ID を表します。 その後、ユーザー Store ID で表されるユーザーに代わって、Microsoft Store API への認証フロー内で使用されます。
詳細については、「Authenticating through a User Store ID for PC titles (PC タイトルのユーザー Store ID による認証)」を参照してください。
ゲーム内コマースでアカウントの同期が必要な場合の推奨事項
Xbox サービス対応のタイトルは、アカウント不一致のシナリオをサポートすることが推奨されていますが、必須ではありません。 実行中のタイトルは検証チェックを実行し、ゲームをプレイしている Xbox サービスアカウントと Microsoft Store にサインインしている MSA が一致しているかどうかを確認し、一致していない場合はゲーム内トランザクションと購入をブロックすることができます。 これにより、ゲーム サービスは、Xbox サービスアカウントが直接所有するサービス間呼び出しを通じてのみ、アイテムを操作および使用できます。 ゲームは、XUserIsStoreUser 関数を使用して、アカウントが一致していないかどうかを確認できます。
Xbox サービスにサインインしているアカウントと Microsoft Store にサインインしているアカウントの同期をユーザーに要求する場合は、ユーザーのアカウントが同じでないこと、およびその問題を解決する方法をユーザーが理解できるように、ご自身のタイトルで UI とガイダンスを提供する必要があります。
これを行う方法に関する推奨事項を次に示します。
- 早い段階で、Microsoft Store にサインインしているアカウントと、ゲームをプレイしている Xbox サービスアカウントが異なることを、ゲームの UI 内でユーザーに通知します。
- Microsoft Store にサインインしているアカウントと、Xbox サービスアカウントが同じでない場合、ゲーム用に購入したアドオンまたはコンテンツが機能しないことを説明します。
- アカウントが同じでない場合、ゲーム内ストアで購入できないことに注意してください。
- Microsoft Store アプリに移動して Xbox サービスで使用しているアカウントでサインインするように案内します。
- Xbox アプリで Xbox サービスアカウントでの Microsoft Store へのサインインを設定するように案内します。
アカウント不一致のシナリオのテスト
上で説明したとおり、アカウント不一致のシナリオは、開発サンドボックスでは有効ではなく、テストできません。 これは、ストア API の ID と結果が、開発サンドボックス内の PC 上の Xbox アプリにサインインしているアカウントに関連付けられるためです。 そのため、アカウント不一致のシナリオは、運用環境またはリテール環境でのみテストおよび検証できます。 これを行うには、リテール環境用のテスト アカウントで、パートナー センターでプライベート フライト グループを設定する必要があります。 その後、タイトルまたはテスト タイトルをリテールに公開できます。ここでは、そのフライト グループ内のアカウントだけに公開されます。 これにより、Xbox アプリおよび Microsoft Software アプリにサインインしている複数のアカウントのシナリオをテストできます。