XStoreContext 會連結到目前登入 Microsoft Store 應用程式的 Microsoft 帳戶 (MSA)。因此,所有 XStore API 結果的範圍都限定於該特定 Microsoft 帳戶。此帳戶可以隨時在未通知的情況下登出或切換為其他帳戶。此外,Microsoft Store 帳戶也可以根據使用者設定,從 XBOX 應用程式切換。
同樣地,XBOX services 帳戶可以透過遊戲內的登入流程切換,造成 XBOX 與 Microsoft Store 應用程式之間的帳戶不相符。在家庭或共用 PC 的案例中,帳戶不相符的狀態可能是刻意造成的。
若未處理玩遊戲的帳戶與登入 Microsoft Store 的帳戶之間帳戶切換或不相符的案例,可能會讓使用者感到困擾。例如,使用者在完成購買後沒有收到遊戲內項目。
下列文章說明如何在 PC 上發生帳戶不相符時進行規劃、處理和緩解。
所述案例在 XBOX 主機上不會造成問題。
XStoreContext 一律會繫結到您建立內容時所使用的 XUser 帳戶。因此,XStore API 和交易一律會繫結到您遊戲中作用中的 XUser 物件。
在開發人員沙箱中測試時,XBOX 與 Windows 市集帳戶必須同步。由於在沙箱中執行時不會使用 Microsoft Store 帳戶,因此帳戶不相符的案例只能在生產 / RETAIL 環境中測試。如需詳細資訊,請參閱測試帳戶不相符的案例。
一般指引
未啟用 XBOX services 的遊戲 (也就是使用 XBOX services 帳戶代表正在遊玩的使用者) 應了解並規劃購買帳戶 (登入 Microsoft Store 的 MSA) 可能隨時變更。因此,在遊戲內購買消耗性產品時,遊戲應立即啟動商務流程,查詢已購買的消耗性產品並履行 (消耗) 該項目。接著由遊戲或遊戲服務更新並追蹤該使用者的消耗性產品餘額。這類似於行動遊戲的商務案例:由主要裝置帳戶付款,但遊戲帳戶 (無論是哪個帳戶) 會取得該購買的遊戲內點數。 如需更多指引,請參閱從您的服務管理消耗性產品。 支援 XBOX services 的遊戲應在設計初期決定是否支援帳戶 (MSA) 不相符的案例。如果您的服務不支援帳戶不相符,您應強制使用者同步帳戶,才能啟用遊戲內購買和內容使用。Windows 回報的資料顯示,有 10-15% 的 XBOX services 使用者在 Windows 工作階段中,登入 Microsoft Store 應用程式的 MSA 與 XBOX services 不同。因此,我們建議為這個使用者群組支援帳戶不相符的案例。不過,如果遊戲的商務系統是建立在 XBOX services 帳戶同時也是購買帳戶的假設之上,則有一些步驟可檢查 XBOX services 與 Microsoft Store 之間的 MSA 帳戶是否同步。例如,同時支援 XBOX 主機和 Windows PC 版本並使用相同遊戲服務的遊戲,就會希望確保帳戶已同步。同樣地,最初在 XBOX 上發行再移植到 PC 的遊戲,可能是以遊玩帳戶與商務身分相同為前提來設計的。在啟用 XBOX services 的遊戲中處理帳戶不相符的具體影響和問題,將在下列各節中說明。範例案例
您的 Microsoft 帳戶 (MSA) 已登入 Windows PC 以及 Microsoft Store 應用程式。您透過 Microsoft Store 購買啟用 XBOX services 的遊戲 (或透過 PC Game Pass 下載) 並安裝遊戲。啟動遊戲時,您選取的 XBOX services 帳戶與登入 Microsoft Store 的帳戶使用相同的認證 (MSA)。當您購買遊戲內消耗性產品時,您的帳戶會被收費,並在 Microsoft Store 服務中獲得預期數量的消耗性產品。遊戲或遊戲的後端服務會查詢您的權利、看到該消耗性產品、履行該消耗性產品,並將產品或價值授與您的遊戲內帳戶。 之後,您的孩子也想玩這個遊戲,並在遊戲中以自己的 Microsoft 帳戶登入 XBOX services。Microsoft Store 應用程式仍然登入您的 Microsoft 帳戶。孩子在遊戲內開始購買您先前購買過的相同消耗性產品。同樣地,您的 Microsoft 帳戶會在 Microsoft Store 中被收費並獲得點數。遊戲或後端服務會根據XStoreContext 查詢新的權利,並在您帳戶的商店結果中看到該消耗性產品。遊戲或後端服務履行該消耗性產品,並將產品授與作用中的玩家,在此情況下就是您孩子的帳戶。
最終結果是您的帳戶被收費,但遊戲將遊戲內產品或價值給了您孩子的帳戶,而不是您的帳戶。
使用 X-Token 時的伺服器對伺服器問題
使用 XBOX services 的遊戲可以使用 X-Token,從其後端服務代表正在玩遊戲的使用者進行呼叫。特別是查詢使用者擁有的產品,以及在您的遊戲中遵循實作消耗性商務系統的最佳做法。不過,委派驗證 X-Token 會繫結到正在玩遊戲的 XBOX services 使用者帳戶。因此,使用 X-Token 對 Microsoft Store API 進行伺服器對伺服器呼叫,無法處理先前所述的帳戶不相符案例。查詢結果只會傳回 XBOX services 帳戶的 MSA 在登入 Microsoft Store 時所購買的項目。使用 User Store ID 進行伺服器對伺服器驗證
若要處理帳戶不相符的案例,對 Microsoft Store API 的服務對服務呼叫必須使用 User Store ID 進行驗證。User Store ID 是從用戶端取得的安全權杖,代表當時登入 Microsoft Store 的帳戶身分。接著,User Store ID 會用於向 Microsoft Store API 進行驗證的流程,代表 User Store ID 中所代表的使用者。 如需詳細資訊,請參閱使用 Microsoft Entra ID 和 User Store ID 進行驗證遊戲內商務需要同步帳戶時的建議
雖然我們建議啟用 XBOX services 的遊戲支援帳戶不相符的案例,但這並非必要。執行中的遊戲可以進行驗證檢查,以了解正在玩遊戲的 XBOX services 帳戶是否與登入 Microsoft Store 的 MSA 相同,讓遊戲在兩者不同時封鎖遊戲內交易和購買。如此可讓遊戲服務只透過服務對服務呼叫,對 XBOX services 帳戶直接擁有的項目執行操作並消耗。遊戲可以使用 XUserIsStoreUser 函式來檢查帳戶是否不相符。 如果您選擇要求使用者同步其登入 XBOX services 和 Microsoft Store 的帳戶,您的遊戲必須提供 UI 和指引,讓使用者了解其帳戶何時不相同,以及如何解決此問題。 建議的 UI 元素:- 在遊戲 UI 的早期通知使用者,登入 Microsoft Store 的帳戶與正在玩遊戲的 XBOX services 帳戶不同。
- 說明除非登入 Microsoft Store 的帳戶與其 XBOX services 帳戶相同,否則為遊戲購買的附加元件或內容將無法運作。
- 告知除非帳戶相同,否則遊戲內商店將不允許購買。
- 提供指引,引導使用者前往 Microsoft Store 應用程式,並以 XBOX services 所使用的相同帳戶登入。
- 提供指引,引導使用者前往 XBOX 應用程式,並設定偏好設定,讓 XBOX 應用程式代為以其 XBOX services 帳戶登入 Microsoft Store。
