> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PC 上での Store アカウントが一致しないシナリオの処理

> PC 上で Microsoft Store と XBOX のアカウントが一致しないシナリオを処理し、アプリ間でアカウントが異なる場合でもプレイヤーが購入を受け取れるようにします。

RETAIL の PC タイトルの `XStoreContext` は、現在 Microsoft Store アプリにサインインしている Microsoft アカウント (MSA) にリンクされています。したがって、すべての XStore API の結果は、その特定の Microsoft アカウントにスコープされます。このアカウントは通知なしにいつでもサインアウトしたり、別のアカウントに切り替えたりできます。さらに、Microsoft Store のアカウントは、ユーザーの設定に基づいて XBOX アプリから切り替えることができます。

同様に、ゲーム内のサインイン フローで XBOX services アカウントを切り替えて、XBOX アプリと Microsoft Store アプリの間でアカウントの不一致を作ることができます。アカウントの不一致は、家族用または共有 PC のシナリオでは意図的なものである場合があります。

ゲームをプレイしているアカウントと Microsoft Store にサインインしているアカウントの間でアカウントが切り替えられたり、不一致になったりするシナリオを処理しないと、ユーザーの不満につながる可能性があります。たとえば、購入が行われた後にユーザーがゲーム内アイテムを受け取れないなどです。

次の記事では、PC でアカウントの不一致が発生した場合に計画、処理、軽減する方法について説明します。

<Note>
  ここで概説するシナリオは、XBOX コンソールでは問題になりません。
</Note>

`XStoreContext` は、常にコンテキストを作成した `XUser` アカウントに紐付けられています。したがって、XStore API とトランザクションは、常にゲーム内のアクティブな `XUser` オブジェクトに紐付けられます。

<Note>
  開発者サンドボックスでのテストでは、XBOX と Windows Store のアカウントが同期している必要があります。サンドボックスでの実行時には Microsoft Store のアカウントは使用されないため、アカウント不一致シナリオは RETAIL 環境でのみテストできます。詳細については、[アカウント不一致シナリオのテスト](#testing-mismatched-account-scenarios)を参照してください。
</Note>

## 一般的なガイダンス

XBOX services を有効にしていないゲーム (つまり、プレイ中のユーザーを表すために XBOX services アカウントを使用していないゲーム) は、購入アカウント (Microsoft Store にサインインしている MSA) がいつでも変わる可能性があることを計画し、理解する必要があります。したがって、消費型製品がゲーム内で購入される場合、ゲームは購入された消費型を照会して履行 (消費) するために、直ちにコマース フローを開始する必要があります。次に、ゲームまたはタイトル サービスがそのユーザーの消費型残高を更新および追跡します。モバイル ゲームのコマース シナリオと同様に、プライマリ デバイス アカウントが支払うアカウントですが、ゲーム アカウント (何であれ) が購入のゲーム内クレジットを取得します。

詳細なガイダンスについては、[サービスから消費型製品を管理する](/publishing/xstore-commerce/xstore-managing-consumables)を参照してください。

XBOX services をサポートするゲームは、設計の早い段階でアカウント不一致 (MSA) シナリオをサポートするかどうかを決定する必要があります。サービスがアカウントの不一致をサポートしていない場合、ゲーム内購入とコンテンツの使用を有効にするには、ユーザーにアカウントの同期を強制する必要があります。Windows から報告されたデータは、Windows セッションで XBOX services とは異なる MSA が Microsoft Store アプリにサインインしている XBOX services ユーザーが 10 \~ 15% であることを示しています。したがって、このユーザー グループのためにアカウント不一致シナリオをサポートすることをお勧めします。ただし、ゲームのコマース システムが XBOX services のアカウントも購入アカウントであるという前提で構築されている場合は、MSA アカウントが XBOX services と Microsoft Store の間で同期していることを確認する手順があります。アカウントが同期していることを確認したいゲームの例としては、同じゲーム サービスを使用する XBOX コンソール版と Windows PC 版の両方をサポートするゲームがあります。同様に、XBOX で最初にリリースされ PC に移植されたゲームは、プレイ アカウントとコマース ID が同じであることを前提に設計されている可能性があります。XBOX services を有効にしたゲーム内でのアカウント不一致処理の具体的な意味と問題については、以降のセクションで概説します。

### シナリオの例

Microsoft アカウント (MSA) が Windows PC と Microsoft Store アプリの両方にサインインしています。Microsoft Store を通じて XBOX services を有効にしたゲームを購入する (または PC Game Pass を通じてダウンロードする) と、ゲームがインストールされます。ゲームを起動すると、Microsoft Store にサインインしているアカウントと同じ資格情報 (MSA) の XBOX services アカウントを選択します。ゲーム内で消費型を購入すると、アカウントは Microsoft Store サービスで期待どおりの消費型数量を課金およびクレジットされます。ゲームまたはゲームのバックエンド サービスがエンタイトルメントを照会し、消費型を確認し、消費型を履行し、製品または値をゲーム内アカウントに付与します。

後で、子供もゲームをプレイしたくなり、独自の Microsoft アカウントでゲーム内の XBOX services にサインインします。Microsoft Store アプリはまだ Microsoft アカウントにサインインしています。子供が、あなたが以前に購入した同じ消費型に対してゲーム内で購入を開始します。再び、Microsoft アカウントが Microsoft Store で課金およびクレジットされます。ゲームまたはバックエンド サービスは `XStoreContext` に基づいて新しいエンタイトルメントを照会し、アカウントの Store 結果に消費型が表示されます。ゲームまたはバックエンド サービスは消費型を履行し、アクティブなプレイヤー (この場合は子供のアカウント) に製品を付与します。

最終結果として、アカウントに課金されますが、ゲームはあなたのアカウントではなく子供のアカウントにゲーム内の製品または値を付与します。

## X-Token に関するサーバー間の問題

XBOX services を使用するタイトルは、バックエンド サービスからゲームをプレイしているユーザーの代わりに呼び出しを行うために X-Token を使用できます。特に、ユーザーが所有する製品を照会し、[ゲーム内での消費型コマース システムの実装のベスト プラクティス](/publishing/xstore-commerce/xstore-managing-consumables)に従うことです。ただし、Delegated Auth X-Token はゲームをプレイしている XBOX services のユーザー アカウントに紐付けられています。したがって、Microsoft Store API へのサーバー間呼び出しに X-Token を使用しても、上記で概説したアカウント不一致シナリオを処理できません。クエリ結果は、XBOX services アカウントの MSA が Microsoft Store にサインインしているときに購入したもののみを返します。

## ユーザー Store ID を使用したサーバー間認証

アカウント不一致シナリオを処理するには、Microsoft Store API へのサービス間呼び出しに、認証のために[ユーザー Store ID](/publishing/xstore-commerce/xstore-authenticating-service#authenticating-with-microsoft-entra-id-and-user-store-ids) を使用する必要があります。ユーザー Store ID は、その時点で Microsoft Store にサインインしているアカウントの ID を表すようにクライアントから取得されるセキュリティ トークンです。次に、ユーザー Store ID は、ユーザー Store ID で表されるユーザーの代わりに Microsoft Store API への認証フローで使用されます。

詳細については、[Microsoft Entra ID とユーザー Store ID を使用した認証](/publishing/xstore-commerce/xstore-authenticating-service#authenticating-with-microsoft-entra-id-and-user-store-ids)を参照してください。

## ゲーム内コマースで同期されたアカウントを必要とする場合の推奨事項

XBOX services を有効にしたタイトルはアカウント不一致シナリオをサポートすることを推奨しますが、必須ではありません。実行中のタイトルは、ゲームをプレイしている XBOX services アカウントが Microsoft Store にサインインしている同じ MSA と一致するかどうかを検証するチェックを行うことができ、それらが同じでない場合、ゲーム内トランザクションと購入をブロックできます。ゲーム サービスは、XBOX services アカウントが直接所有するアイテムに対してのみ、サービス間呼び出しを通じてアクションを実行および消費できます。ゲームは [XUserIsStoreUser](/reference/system/xstore/xstore_members) 関数を使用して、アカウントが一致しないかどうかを確認できます。

XBOX services と Microsoft Store にサインインしているアカウントの同期をユーザーに求めることを選択した場合、タイトルは、アカウントが同じでない場合とその解決方法をユーザーが理解するための UI とガイダンスを提供する必要があります。

推奨される UI 要素:

* ゲーム UI の早い段階で、Microsoft Store にサインインしているアカウントがゲームをプレイしている XBOX services アカウントと異なることをユーザーに通知します。
* Microsoft Store にサインインしているアカウントが XBOX services アカウントと同じでない限り、ゲーム用に購入したアドオンやコンテンツが機能しないことを説明します。
* アカウントが同じでない限り、ゲーム内ストアでの購入が許可されないことをメッセージで通知します。
* Microsoft Store アプリに移動し、XBOX services で使用しているのと同じアカウントでサインインするためのガイダンスを提供します。
* XBOX アプリに移動し、XBOX services アカウントを Microsoft Store にサインインするように設定するオプションを設定するガイダンスを提供します。

## アカウント不一致シナリオのテスト

前述のとおり、アカウント不一致シナリオは開発サンドボックスでは効果的でなく、テストできません。開発サンドボックスでは、Store API の ID と結果は PC 上の XBOX アプリにサインインしているアカウントに紐付けられているためです。したがって、アカウント不一致シナリオは RETAIL 環境でのみテストまたは検証できます。これらのシナリオをテストするには、RETAIL 環境用のテスト アカウントでパートナー センターにプライベート フライト グループを設定してください。次に、タイトルまたはテスト タイトルを、フライト グループ内のアカウントのみが表示できる RETAIL に公開できます。これにより、ゲーム、XBOX アプリ、および Microsoft Store アプリにサインインしている異なるアカウントでシナリオをテストできます。

## リファレンス API ドキュメント

* [XStore (API の内容)](/reference/system/xstore/xstore_members)
* [xuser (API の内容)](/reference/system/xstore/xstore_members)
  * 関数
    * [XUserIsStoreUser](/reference/system/xstore/xstore_members)

## 関連項目

[コマースの概要](/publishing/xstore-commerce/xstore-commerce-overview)

[サービスから製品を管理する](/publishing/xstore-commerce/xstore-authenticating-service)

[XStore API リファレンス](/reference/system/xstore/xstore_members)


## Related topics

- [ゲームの体験版の実装](/ja-jp/publishing/xstore-commerce/xstore-trials.md)
- [Microsoft Store API を使用してサービスを認証する](/ja-jp/publishing/xstore-commerce/xstore-authenticating-service.md)
- [ゲームの製品共有モデル](/ja-jp/publishing/xstore-commerce/xstore-product-sharing.md)
- [サービス間認証用のユーザー Store ID を要求する](/ja-jp/publishing/xstore-commerce/xstore-requesting-userstoreid.md)
- [XStore 開発とテストの有効化](/ja-jp/publishing/xstore-commerce/xstore-product-testing-setup.md)
