> ## 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.

# 使用 Microsoft Store API 驗證您的服務

> 說明如何取得並使用委派驗證 X 權杖或使用者 Store 識別碼，向 Microsoft Store 服務進行驗證。

本文說明如何使用委派 X 權杖或使用者 Store 識別碼，驗證對 Microsoft Store API 的服務對服務呼叫：

* [使用者 Store 識別碼和 Microsoft Entra ID](#authenticating-with-microsoft-entra-id-and-user-store-ids)：將驗證和結果繫結至登入 Microsoft Store 應用程式的使用者帳戶。
* [委派驗證 X 權杖](#authenticating-with-delegated-authentication-x-tokens)：將驗證和結果繫結至目前正在玩遊戲之使用者的 XBOX services 帳戶。

新的 XBOX 和 PC 遊戲請使用使用者 Store 識別碼驗證。X 權杖的範圍限定於作用中的玩家帳戶，且某些服務 (包括 Recurrence 和 Purchase) 不支援 X 權杖。在 PC 上，購買帳戶和遊玩帳戶可能不同。如需詳細資訊，請參閱[處理 PC 上 Store 帳戶不相符的情況](/zh-TW/publishing/xstore-commerce/xstore-mismatched-accounts)。

對於跨平台和長時間執行的服務流程，請使用使用者 Store 識別碼，因為它們可以在沒有作用中用戶端互動的情況下更新。相較之下，X 權杖流程在超過最長存留期後需要重新整理的用戶端連線。

下列各節摘要說明每種驗證類型所需的設定和資源。

## 使用 Microsoft Entra ID 和使用者 Store 識別碼進行驗證

所有 Microsoft Store 服務 API 都支援透過 Microsoft Entra ID 和使用者 Store 識別碼進行驗證。若要使用此驗證，您 (或您的組織) 必須擁有 Microsoft Entra ID 租用戶，並在其下註冊應用程式識別碼。若要註冊應用程式，您的帳戶在租用戶下需要具有全域管理員角色。如果您已在使用 Microsoft Office 365 或 Microsoft 的其他商務服務，則您已經有可在 Azure 入口網站中管理的 Microsoft Entra ID 租用戶。

如需取得此驗證類型所需之使用者 Store 識別碼的指引，請參閱[要求使用者 Store 識別碼以進行服務對服務驗證](/zh-TW/publishing/xstore-commerce/xstore-requesting-userstoreid)。

<Note>
  在 PC 上，權利會與登入 Microsoft Store 應用程式的使用者相關聯，而不是與目前正在玩遊戲的使用者相關聯。由於這兩個帳戶可能不同，建議 PC 遊戲檢閱[處理 PC 上 Store 帳戶不相符的情況](/zh-TW/publishing/xstore-commerce/xstore-mismatched-accounts)中的資訊。
</Note>

當您使用 Microsoft Entra 驗證流程呼叫 Microsoft Store API 時，會在要求的 `Authorization` 標頭中使用 Microsoft Entra 存取權杖，如下所示。

```bash theme={null}
Authorization: Bearer <Entra ID access token>  
```

如果您是在沙箱中工作，請在 JSON 要求本文中包含下列宣告。若未包含，結果會預設為 RETAIL。

範例：

```json theme={null}
  "sbx": "XDKS.1"
```

<Info>
  \*\*開發人員管理之消耗性產品的限制：\*\*雖然使用者 Store 識別碼和 Entra ID 驗證適用於沙箱環境中大部分的 Microsoft Store API 呼叫，但 [Consume API](/zh-TW/reference/microsoft-store-apis/xstore-v8-consume) 不支援在開發沙箱中對開發人員管理的消耗性產品使用此驗證方法。若要在沙箱中消耗開發人員管理的消耗性產品，請改用[委派驗證 XSTS 權杖](#authenticating-with-delegated-authentication-x-tokens)。
</Info>

您也必須包含下表所示的受益人值，包括來自用戶端的使用者 Store 識別碼。

| 參數 | 類型 | 描述 | 必要 |
| - | - | - | - |
| `identityType` | `string` | 指定字串值 `b2b`。 | 是 |
| `identityValue` | `string` | [使用者 Store 識別碼金鑰](/zh-TW/publishing/xstore-commerce/xstore-requesting-userstoreid#step-4-create-a-user-store-id-key)，代表您要回報其消耗性產品已履行之使用者的身分識別。 | 是 |
| `localTicketReference` | `string` | 傳回之回應所要求的識別碼。請使用與使用者 Store 識別碼金鑰中 *userId* [宣告](/zh-TW/publishing/xstore-commerce/xstore-requesting-userstoreid#claims-in-a-user-store-id-key)相同的值。 | 是 |

範例：

```json theme={null}
  "beneficiaries": [
    {
        "identitytype" : "b2b",
        "identityValue" : "eyJ0eXAiOiJ...",
        "localTicketReference" : "testReference"
    }
  ],
```

如需如何取得、管理及使用使用者 Store 識別碼驗證的詳細資訊，請參閱下列資源。

* [Microsoft.StoreServices (GitHub)](https://github.com/microsoft/Microsoft-Store-Services)：用於從您的後端驗證及呼叫 Microsoft Store 服務的程式庫和原始程式碼。
* [Microsoft.StoreServices 範例 (GitHub)](https://github.com/microsoft/Microsoft-Store-Services-Sample)：示範驗證、商務整合和退款調節模式的服務範例。
* [要求使用者 Store 識別碼以進行服務對服務驗證](/zh-TW/publishing/xstore-commerce/xstore-requesting-userstoreid)
* [更新使用者 Store 識別碼金鑰](/zh-TW/publishing/xstore-commerce/xstore-renew-userstoreid)
* [從服務管理產品權利](https://learn.microsoft.com/windows/uwp/monetize/view-and-grant-products-from-a-service)

### 呼叫 Microsoft Store API 的圖表

下圖說明從您的服務使用使用者 Store 識別碼呼叫 Microsoft Store API 的程序。

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/b2b-2.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=2d3f87bf7ab2c6e0b0c58085b1560506" alt="顯示使用使用者 Store 識別碼呼叫 Microsoft Store API 之程序的圖表。您的遊戲服務會與 Microsoft Entra ID 交換權杖，並呼叫 Store 集合或產品 API。" width="826" height="431" data-path="images/xstore/b2b-2.png" />

### 使用使用者 Store 識別碼和 Microsoft Entra ID 驗證檢視及管理產品所需的額外設定

若要使用 Microsoft Entra ID 和使用者 Store 識別碼，請將 Microsoft Entra 應用程式的用戶端識別碼新增至 Partner Center 中遊戲的 **Product collections and purchases** 設定。您最多可以設定兩個用戶端識別碼，透過 Collections 和 Purchase 服務存取產品及其附加元件。當您的產品未正確連結至 Microsoft Entra 應用程式用戶端識別碼時，最常見的徵兆是對 Collections 的呼叫成功，但結果中沒有任何項目。

#### 設定您的產品，使其可透過 Microsoft Entra ID 和使用者 Store 識別碼讓您的服務看見

1. 從遊戲的 Partner Center 頁面中，從左側面板選取 **Product collections and purchases**。
2. 輸入您用來驗證服務的 Microsoft Entra 應用程式用戶端識別碼。
3. 選取 **Save** 按鈕。
4. 將遊戲產品及其下的所有附加元件重新發佈至您沙箱或開發人員環境中的 Microsoft Store。

發佈程序完成後，您應該會看到服務呼叫傳回正確的項目。

## 使用委派驗證 X 權杖進行驗證

使用委派驗證 X 權杖來驗證服務對服務呼叫，方法是以下列格式將 `Authorization` 標頭新增至要求。

```JSON theme={null}
Authorization: XBL3.0 x=<user hash>;<X-token>
```

X 權杖的目標信賴憑證者必須是 [https://licensing.xboxlive.com](https://licensing.xboxlive.com)，與舊版 XBOX Inventory 服務相同。如果您先前已將服務設定為呼叫 XBOX Inventory，則可以對此端點重複使用相同的權杖。您也需要符合指定端點之簽章原則的簽章標頭。

如需如何取得、管理及使用委派驗證 X 權杖和簽章的詳細資訊，請參閱下列資源。

* [Game Service 範例](https://aka.ms/gdkdl)：完整的 Web 服務範例，示範如何驗證及處理來自用戶端的 X 權杖、伺服器對伺服器驗證、商務服務等。請從 [GDK 下載網站](https://aka.ms/gdkdl)下載最新版本。下載 All Samples 的最新版本。Game Service 範例位於所下載 .zip 檔案中的 samples\Live\GameService 下。
* [Xfest 2019 - XSTS Auth and Server to Server made Easy](https://forums.xboxlive.com/articles/96129/xfest-online-2019-archive.html)：X 權杖的概觀和說明，以及 Game Service 範例如何協助您開始進行服務對服務驗證。若要下載簡報資訊，請在封存網站上選取 **GDK Track Downloads**。
* **XBOX services 驗證和服務對服務呼叫**：有關驗證、X 權杖，以及對 XBOX services 進行服務對服務呼叫所需步驟和呼叫的更詳細文件。

### 使用委派驗證 X 權杖檢視及管理產品所需的額外設定

X 權杖會繫結至 Partner Center 內的商業合作夥伴識別碼，因此您必須將產品連結至相同的商業合作夥伴識別碼。實際上，產品必須位於某個產品群組下，且該產品群組的 Dev Studio ID 須與您信賴憑證者所使用的商業合作夥伴識別碼相符。

當您的產品未正確連結至正確的商業合作夥伴識別碼時，最常見的徵兆是對 Collections 的呼叫成功，但結果中未傳回任何項目。如需詳細資訊，請參閱論壇文章 [B2B call to Collections LicensePreview service returns empty results (Partner Center configured game)](https://forums.xboxlive.com/questions/78683/b2b-call-to-collections-licensepreview-service-ret.html)。

#### 在 Partner Center 中設定您的產品和 Web 服務

1. 使用 Web 服務的 **Generate Certificate** 連結建立商業合作夥伴憑證。(選取 **Developer Settings** > **XBOX Live** > **Web Services**。) 選擇您信賴憑證者所繫結之 Web 服務資料列中的連結。
2. 前往商業合作夥伴管理 UI (選取 **Developer Settings** > **XBOX Live** > **Business Partner**)，並複製與您在步驟 1 中使用之 Web 服務相符的商業合作夥伴識別碼。(商業合作夥伴識別碼範例：12345678-9012-3456-7890-123456789012)
3. 從產品的 **Partner Center Overview** 頁面，選取 **Create a new**，然後選取 **Product group**。
4. 將此產品群組指派給 Dev Studio，如果您還沒有，請選取 **Create a new developer studio**。
5. 確認所選 Dev Studio 的識別碼與步驟 2 中的商業合作夥伴識別碼相符。如果 **Dev Studio ID (optional)** 為空白，請將商業合作夥伴識別碼複製到其中。如果此欄位已有使用中的值，請建立新的 Dev Studio 而非覆寫該值，以避免中斷現有的服務對服務產品對應。
6. 使用相符的商業合作夥伴識別碼設定 Dev Studio 之後，返回您建立的產品群組。將您的遊戲和所有產品新增至 **Included in this product group** 清單。
7. 選取 **Save** 以完成建立產品群組。
8. 前往遊戲的 XBOX Settings UI，並確認連結的商業合作夥伴與步驟 2 中使用的相同。
9. 將產品群組中的所有項目重新發佈至您沙箱或開發人員環境中的 Microsoft Store。

發佈程序完成後，您會看到服務呼叫傳回正確的項目。

## 另請參閱

[Microsoft Store 服務 API](/zh-TW/reference/microsoft-store-apis/index)

[要求使用者 Store 識別碼以進行服務對服務驗證](/zh-TW/publishing/xstore-commerce/xstore-requesting-userstoreid)

[更新使用者 Store 識別碼金鑰](/zh-TW/publishing/xstore-commerce/xstore-renew-userstoreid)


## Related topics

- [要求 User Store ID 以進行服務對服務驗證](/zh-TW/publishing/xstore-commerce/xstore-requesting-userstoreid.md)
- [Microsoft Store v8 Collections b2bLicensePreview API](/zh-TW/reference/microsoft-store-apis/xstore-v8-query-for-products.md)
- [collections.mp.microsoft.com/v9.0/collections/publisherQuery](/zh-TW/reference/microsoft-store-apis/xstore-v9-query-for-products.md)
- [purchase.mp.microsoft.com/v8.0/b2b/clawback/sastoken](/zh-TW/reference/microsoft-store-apis/xstore-v8-clawbackv2-sastoken.md)
- [collections.mp.microsoft.com/v8.0/collections/consume](/zh-TW/reference/microsoft-store-apis/xstore-v8-consume.md)
