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

# 使用者驗證與擁有權

> 將 Steam 使用者驗證與擁有權檢查移轉至 XBOX GDK，涵蓋使用者登入、權利，以及兩個平台之間的授權差異。

Steamworks 和 XBOX Game Development Kit (GDK) 都提供 API，用於驗證使用者，並確認他們擁有正在遊玩的遊戲和/或他們嘗試存取的額外內容。這些 API 想要達成的目標有所不同。

Steam API 會為多人遊戲工作階段驗證使用者的身分，並使用擁有權檢查來確認使用者正在遊玩從 Steam 商店取得的合法遊戲副本。然而，XBOX Game Development Kit (GDK) 需要將使用者登入 (這會隱含地透過 XBOX services 驗證其身分)，並另外檢查目前的 Microsoft Store 帳戶是否擁有該遊戲的權利。

在 XBOX Game Development Kit (GDK) 中，用於驗證和擁有權的兩個 API 以不同的平台為目標，在某些情況下甚至是完全不同的帳戶。因此，我們會使用\_擁有權利\_一詞，表示使用者擁有來自 Microsoft Store 的有效授權，可以遊玩目前的遊戲。如需此內容及其影響的詳細資訊，請參閱本主題稍後的「兩個平台之間的授權差異」一節。

## 使用者驗證

在 Steam 中，當用戶端啟動遊戲時，使用者一律處於「已登入」狀態。除了初始化 API 之外，遊戲不需要做任何事就能隨時存取使用者的 Steam ID。Steam 中的驗證是指檢查使用者的預設身分是否確實為已登入啟動遊戲之用戶端的使用者的程序，其方式是使用 `ISteamUser` API 搭配工作階段票證 (搭配點對點或專用伺服器)、加密的應用程式票證 (搭配安全伺服器)，或 Steam Web API。驗證之後，Steam Web 或 `ISteamUser` API 可以使用票證來驗證目前遊戲或其可下載內容 (DLC) 的擁有權。

在 XBOX Game Development Kit (GDK) 中不需要此驗證步驟，因為您在依照[初始化 XBOX Game Development Kit (GDK)](/zh-TW/build/steam-porting-guide/initializing-the-gdk) 中的步驟將使用者登入時，就已經完成驗證。因此，XBOX Game Development Kit (GDK) 沒有與 Steam 工作階段票證或加密應用程式票證對應的功能，可為多人遊戲工作階段驗證使用者的身分。

## 擁有權與數位版權管理 (DRM)

若要確認使用者擁有其目前正在遊玩之遊戲的權利，您需要使用 `XStore` API 中的 [`XStoreQueryGameLicenseAsync`](/zh-TW/reference/system/xstore/xstore_members) 函式，檢查使用者是否擁有遊玩該遊戲的授權。在非同步回呼中，檢查是否：

1. 查詢成功 (也就是說，使用者擁有授權)。
2. 從 [`XStoreQueryGameLicenseResult`](/zh-TW/reference/system/xstore/xstore_members) 提供的授權仍然有效。

如果兩項檢查都成功，您就可以視為使用者擁有遊玩您遊戲的權利。在 XBOX Game Development Kit (GDK) 中，這最接近於在 Steam Web API 中使用 `ISteamUser/CheckAppOwnership`，或使用應用程式票證呼叫 `SteamEncryptedAppTicket::BIsTicketForApp`。

如需執行此檢查的詳細資訊和程式碼範例，請參閱 [XStore：基本 DRM 與授權檢查](/zh-TW/publishing/xstore-commerce/xstore-basic-drm)。此主題也提供更強固的授權檢查選項相關資訊，這些選項可防止透過竄改來略過此用戶端檢查。

Steam 也提供 DRM 包裝函式，而 XBOX Game Development Kit (GDK) 沒有與之對應的功能。Microsoft Store 會在啟動從其安裝的應用程式時執行反盜版檢查。如需完整的 DRM 保護，除了執行連結之程式碼範例中的授權檢查之外，我們還建議使用協力廠商解決方案。

## 檢查 DLC 的擁有權

如果您的遊戲有相關聯的 DLC，您可以使用 `XStore` API 檢查使用者的 Microsoft Store 帳戶是否可以存取某個項目。若要檢查這些授權，您首先需要使用 [`XStoreQueryAssociatedProductsAsync`](/zh-TW/reference/system/xstore/xstore_members) 函式查詢與您遊戲相關聯的所有產品，然後使用 [`XStoreAcquireLicenseForPackageAsync`](/zh-TW/reference/system/xstore/xstore_members) 函式 (類似於 `ISteamUser/CheckAppOwnership` 或 `ISteamUser::UserHasLicenseForApp` 函式)，取得查詢所傳回清單中特定 DLC 項目的授權。

與檢查遊戲的權利一樣，您需要查看是否已成功取得授權，以及授權是否有效。如果兩項檢查都通過，您就可以視為使用者已獲授權存取該 DLC 項目。如需此程序的程式碼範例，請參閱[管理及授權選用套件 (DLC)](/zh-TW/publishing/xstore-commerce/xstore-dlc)。

## 兩個平台之間的授權差異

請務必注意 Steam 與 Microsoft Store 之間的理念差異。在 Steam 中，授權檢查會確認身分已通過驗證的使用者是否因為購買遊戲或透過 Steam Family Sharing 而擁有遊玩目前遊戲的授權。

然而，XBOX Game Development Kit (GDK) 會檢查目前已驗證的 Microsoft Store 帳戶是否擁有存取內容的權利，並透過 XBOX 帳戶取得身分。這有一個重要的注意事項：這兩個帳戶上使用的 Microsoft 帳戶\_可能不相同\_，即使它們屬於同一個人也是如此。因此，如果您想要限制可以使用一份遊戲或其他 Microsoft Store 內容授權進行遊玩的不同裝置數目，請務必熟悉 Microsoft Store 提供的各種授權模式。如需詳細資訊，請參閱[遊戲的產品共用模式](/zh-TW/publishing/xstore-commerce/xstore-product-sharing)。


## Related topics

- [Steam 移植指南概觀](/zh-TW/build/steam-porting-guide/overview.md)
- [從 Steam 移植](/zh-TW/paths/porting/from-steam.md)
- [基本商店作業](/zh-TW/publishing/xstore-commerce/xstore-basic-operations.md)
- [PlayFab 的 Microsoft 帳戶驗證](/zh-TW/services/playfab/identity/dev-identity/authentication/aad-authentication.md)
- [從您的服務查詢使用者權利](/zh-TW/publishing/xstore-commerce/xstore-query-entitlements.md)
