Skip to main content
生产环境中 PC 游戏的 XStoreContext 与当前登录 Microsoft Store 应用的 Microsoft 账户 (MSA) 关联。因此,所有 XStore API 结果都限定于该特定 Microsoft 账户。该账号可能会随时未经通知地注销或与另一账号切换。此外,Microsoft Store 账号也可能会根据用户设置从 XBOX 应用切换。 同样,游戏内的 XBOX 服务账号可以通过登录流程切换,导致 XBOX 应用和 Microsoft Store 应用之间账号不匹配。账号不匹配状态在家庭或共享 PC 场景中可能是有意为之。 如果不处理游玩游戏的账号与登录 Microsoft Store 的账号之间切换或不匹配的场景,可能会导致用户不满。例如,用户完成购买后没有收到游戏内物品。 以下文章介绍了如何在 PC 上出现账号不匹配时进行规划、处理和缓解。
所述场景在 XBOX 主机上不成问题。
XStoreContext 始终与你用于创建该上下文的 XUser 账号绑定。因此,XStore API 和交易始终与游戏中活跃的 XUser 对象绑定。
在开发者沙盒中进行测试要求 XBOX 和 Windows Store 账号保持同步。由于在沙盒中运行时不会使用 Microsoft Store 账号,账号不匹配的场景只能在生产/RETAIL 环境中测试。有关更多信息,请参阅测试账号不匹配的场景

一般指南

未启用 XBOX 服务(即,使用 XBOX 服务账号代表游玩用户)的游戏应做好规划并理解:购买账号(登录 Microsoft Store 的 MSA)可能随时变化。因此,在游戏中购买消耗品产品时,游戏应立即启动商务流程以查询已购买的消耗品并履约(消费)该物品。然后游戏或游戏服务为该用户更新和跟踪消耗品的余额。这类似于移动游戏商务场景,其中主设备账号是付款方,但游戏账号(无论是什么)会获得该次购买的游戏内积分。 有关更多指导,请参阅从你的服务管理消耗品产品 支持 XBOX 服务的游戏应尽早在设计阶段决定是否支持账号不匹配 (MSA) 的场景。如果你的服务不支持账号不匹配,则应强制用户同步账号才能进行游戏内购买和内容使用。来自 Windows 的数据表明,10-15% 的 XBOX 服务用户在 Windows 会话中登录 Microsoft Store 应用的 MSA 与 XBOX 服务的账号不同。因此,我们建议为此类用户群体支持账号不匹配的场景。但是,如果游戏的商务系统构建在“XBOX 服务账号也是购买账号”这一假设之上,则可以采取步骤检查 XBOX 服务和 Microsoft Store 之间的 MSA 账号是否同步。想要确保账号同步的游戏示例,是使用相同游戏服务同时支持 XBOX 主机和 Windows PC 版本的游戏。同样,最初在 XBOX 上发布并移植到 PC 的游戏,其设计可能基于游玩账号与商务身份相同。以下各节概述了在启用 XBOX 服务的游戏中处理账号不匹配的具体影响和问题。

示例场景

你的 Microsoft 账户 (MSA) 登录了 Windows PC 和 Microsoft Store 应用。你通过 Microsoft Store 购买了一款启用 XBOX 服务的游戏(或通过 PC Game Pass 下载)并安装了该游戏。启动游戏时,你选择了与登录 Microsoft Store 相同凭据 (MSA) 的 XBOX 服务账号。当你购买游戏内消耗品时,你的账号被扣款并在 Microsoft Store 服务中被计入预期的消耗品数量。游戏或游戏后端服务查询你的权益,看到该消耗品,履约该消耗品,并将产品或价值授予你的游戏内账号。 后来你的孩子也想玩这款游戏,并使用他们自己的 Microsoft 账户在游戏中登录 XBOX 服务。Microsoft Store 应用仍然登录着你的 Microsoft 账户。孩子在游戏内启动了对你之前购买的相同消耗品的购买。你的 Microsoft 账户再次被扣款并在 Microsoft Store 中被计入。游戏或后端服务根据 XStoreContext 查询新权益,并在你账号的商店结果中看到该消耗品。游戏或后端服务履约该消耗品并将产品授予当前活跃玩家,在此情况下就是你孩子的账号。 最终结果是:你的账号被扣款,但游戏将游戏内产品或价值授予了你孩子的账号,而不是你的账号。

使用 X-Token 的服务到服务问题

使用 XBOX 服务的游戏可以从其后端服务代表游玩游戏的用户使用 X-Token 进行调用。特别是查询用户拥有的产品以及在游戏中遵循实现消耗品商务系统的最佳实践。但是,委派身份验证 X-Token 与游玩游戏的 XBOX 服务用户账号绑定。因此,使用 X-Token 对 Microsoft Store API 进行服务到服务调用无法处理前面所述的账号不匹配场景。查询结果只返回 XBOX 服务账号的 MSA 在登录 Microsoft Store 时所购买的内容。

使用 User Store ID 进行服务到服务身份验证

若要处理账号不匹配场景,对 Microsoft Store API 的服务到服务调用必须使用 User Store ID 进行身份验证。User Store ID 是从客户端获取的安全令牌,代表当时登录 Microsoft Store 的账号身份。然后在对 Microsoft Store API 的身份验证流程中使用 User Store ID,代表该 User Store ID 中所代表的用户进行调用。 有关更多信息,请参阅使用 Microsoft Entra ID 和 User Store ID 进行身份验证

要求游戏内商务同步账号的建议

尽管我们建议启用 XBOX 服务的游戏支持账号不匹配场景,但这并非必需。运行的游戏可以进行验证检查,以了解游玩游戏的 XBOX 服务账号是否与登录 Microsoft Store 的 MSA 相同,从而允许游戏在两者不同时阻止游戏内交易和购买。允许游戏服务仅对 XBOX 服务账号直接拥有的物品通过服务到服务调用进行操作和消费。游戏可以使用 XUserIsStoreUser 函数检查账号是否不匹配。 如果你选择要求用户同步登录 XBOX 服务和 Microsoft Store 的账号,你的游戏必须提供 UI 和指导,帮助用户了解他们的账号何时不相同以及如何解决问题。 推荐的 UI 元素:
  • 在游戏 UI 早期提醒用户登录 Microsoft Store 的账号与游玩游戏的 XBOX 服务账号不同。
  • 说明除非登录 Microsoft Store 的账号与其 XBOX 服务账号相同,否则为游戏购买的附加内容或内容将无法使用。
  • 提示:除非账号相同,否则游戏内商店不允许购买。
  • 提供指导:前往 Microsoft Store 应用并使用与 XBOX 服务相同的账号登录。
  • 提供指导:前往 XBOX 应用并将偏好设置为将其 XBOX 服务账号登录到 Microsoft Store。

测试账号不匹配的场景

如前所述,账号不匹配场景在开发沙盒中无效且不可测试。因为在开发沙盒中,商店 API 的身份和结果与登录 PC 上 XBOX 应用的账号绑定。因此,你只能在生产/RETAIL 环境中测试或验证账号不匹配的场景。要测试这些场景,你应在合作伙伴中心为 RETAIL 环境设置一个包含测试账号的私有 flight 组。然后可以将你的游戏或测试游戏发布到 RETAIL,只有 flight 组中的账号可以看到它。这样你就可以测试不同账号登录游戏、XBOX 应用和 Microsoft Store 应用的场景。

参考 API 文档

另请参阅

商务概述 从你的服务管理产品 XStore API 参考
最后修改于 2026年8月24日