次の方法で共有


XSTS トークンまたは OAuth 2.0 を使用してサービスからユーザー Store IDを要求する

このトピックでは、ゲーム クライアントからアクセス トークンとユーザー Store ID を交換することなく、サービスからユーザーストア ID を生成する方法について説明します。 以下のシナリオは、このユーザー Store ID の生成方法に役立ちます。

  • フロー内にゲームクライアントがないエクスペリエンス
  • ユーザーの Xbox アカウントを、ユーザー独自のサービス アカウントにリンクする
  • クライアントからサービスへの呼び出しおよびサービス間呼び出しに XSTS トークン認証を既に使用しているゲームおよびサービス

ユーザー Store ID 全般については、「サービス間認証にユーザー Store ID を要求する」を参照してください。

XSTS トークンの要件

このプロセスでは、代理認証 XSTS トークンを使用して、ユーザー Store ID が表すユーザーを識別する必要があります。

委任認証 XSTS トークンとその作成方法の詳細については、「Xbox Live サービスへのタイトル サービス呼び出し (NDA トピック)認可が必須です」を参照してください。

ユーザー Store ID を生成するための OAuth 2.0 の要件

サービスで OAuth を使用してユーザーが Microsoft アカウント (MSA) でサインインするようにする場合は、次のものが必要です。

  • OAuth 資格情報を XSTS トークンと交換する必要があるため、ユーザーは Xbox ID を Microsoft アカウントに関連付ける必要があります (上記参照)。
  • 要求する OAuth スコープには、このフローに対する適切なユーザーの同意と、必要な XSTS トークンを取得する機能を確保するために、xboxlive.signinxboxlive.offline_access の両方を含める必要があります。

サービスで OAuth で Xbox サービス ログインを使用する方法の詳細については、「タイトル Web サイトの Xbox サービス サインイン (NDA トピック)認可が必須です」を参照してください。

OAuth 2.0 資格情報を使用する場合の手順

OAuth を使用すると、ユーザーの同意を得て、OAuth の資格情報とトークンを交換して、ユーザー用の XSTS トークンを独自の証明書利用者に対して作成できます。 ユーザーの XSTS トークンを取得したら、以下の 「XSTS トークンを使用する場合の手順」 で概説されているのと同じフローで使用します。

OAuth 資格情報を XSTS トークンと交換するためのアウトライン フロー:

  1. OAuth 2.0 認証コードを取得する
  2. 認証コードを RPS トークン (Microsoft アカウント アクセス トークンとも呼ばれます) と交換する
  3. RPS トークンを Xbox ユーザー トークンと交換する
  4. Xbox ユーザー トークンを独自の証明書利用者に対して XSTS トークンと交換する
  5. 以下の 「XSTS トークンを使用する場合の手順」 の X トークンを使用します。

上記の手順の完全な実装の詳細については、「タイトル Web サイトの Xbox サービス サインイン (NDA トピック)認可が必須です」を参照してください。

XSTS トークンを使用する場合の手順

独自の証明書利用者のユーザーを識別する XSTS トークンを取得したら、トークン内の DelegationToken 要求を使用して、ユーザー Store ID の作成に必要な委任認証 XSTS トークンを作成できます。 このフローの初期 XSTS トークンは、ゲーム クライアントから取得することも、上記の OAuth2.0 フローから取得することもできます。

委任認証 XSTS トークンを作成するためのアウトライン フロー:

  1. ユーザーの XSTS トークンから DelegationToken 要求 (dlt) を抽出します。
  2. ビジネス パートナー証明書を使用して、XSAS サービスからサービストークンを取得します。
  3. 委任トークン、サービス トークン、ターゲット証明書利用者 (以下の表を参照) を、委任認証 XSTS トークンと交換します。

委任認証 XSTS トークンの作成方法に関する完全な実装の詳細については、「Xbox サービスへのタイトル サービス呼び出し (NDA トピック)認可が必須です」を参照してください。

手順 3 では、使用する証明書利用者は、ユーザーのユーザー コレクション ID またはユーザー購入 ID のどちらを生成するかによって異なります。

ユーザー Store ID の種類 証明書利用者用の委任認証 XSTS トークン ユーザー Store ID を作成するための URI
ユーザー コレクション ID http://licensing.xboxlive.com https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys
ユーザー購入 ID http://mp.microsoft.com/ https://purchase.mp.microsoft.com/v7.0/users/me/keys

要求

ユーザーおよび対応する証明書利用者に対して委任認証 XSTS トークンを取得したら、ユーザー Store ID を要求できます。
これを行うには、生成するユーザー Store ID の種類に基づいて、対応する URI に HTTPS POST 要求を行います(上記の表を参照)。

要求の構文

メソッド 要求 URI
POST collections.mp.microsoft.com/v7.0/beneficiaries/me/keys
POST purchase.mp.microsoft.com/v7.0/users/me/keys

要求ヘッダー

ヘッダー 説明
Authorization string 必須。 ユーザーを形式で表す委任された認証 XSTS トークン XBL3.0 x=[User Hash];[Token]
Host string 呼び出される URI のホストと一致する必要があります。
Content-Length number 要求本文の長さ。
Content-Type string 要求と応答の種類を指定します。 現在唯一サポートされている値は application/json です。

リクエストの本文

パラメーター 説明 必須かどうか
serviceTicket string サービスのコレクション アクセス トークンまたは購入アクセス トークンは、呼び出している URI に基づいて行います。 これらのアクセス トークンの作成については、「さまざまなトークンと対象ユーザー URI について」 を参照してください。 はい
publisherUserId string ユーザー Store ID にスタンプされ、独自の追跡に使用できるオプションの値 いいえ

要求の例

POST https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys HTTP/1.1
Authorization: XBL3.0 x=13178812777611882182;eyJlbmMiOiJBMTI4Q0JDK...
Content-Length: 1352
Content-Type: application/json;
Host: collections.mp.microsoft.com
 
{
    "serviceTicket": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn...",
    "publisherUserId": "CustomPublisherUserId"
}

応答

応答の本文

パラメーター 説明 必須かどうか
key string Microsoft Store サービスでのサービス間認証に使用できるユーザー Store ID はい

応答の例

HTTP/1.1 200 OK
Date: Wed, 23 Mar 2022 23:06:25 GMT
Content-Type: application/json; 
Content-Length: 1716
MS-CorrelationId: dd5be303-f9a0-408a-bd01-e8c63afa721a
MS-RequestId: 0b9c8e5e-dfdd-4cf8-bfbe-93a5be3a7f48
MS-CV: rqFUH3gA+UOmTyXe.0

{"key":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjY..."}

関連項目

サービスから製品を管理する

Microsoft Store API によるサービスの認証

Xbox サービスへのタイトル サービスの呼び出し (NDA トピック)認可が必須です

タイトル web サイト用 Xbox サービス サインイン (NDA トピック)認可が必須です

ユーザー Store ID キーを更新する

Microsoft.StoreServices library

Microsoft.StoreServices Sample