在电脑上处理不匹配的存储帐户场景

生产环境中的电脑游戏上的 XStoreContext 将始终链接到当前已登录到 Microsoft Store 应用的 Microsoft 帐户 (MSA)。 所有 XStore API 结果和事务的范围都限于此主动登录的 MSA。 但是,此帐户随时有可能因用户操作而发生切换:用户在 Microsoft Store 应用中注销此帐户并使用另一个帐户,而未注意到正在运行的游戏。 如果用户设置了偏好,则 Xbox 应用也可能切换 Microsoft Store 帐户,以确保当用户在电脑上玩游戏时,其 Xbox 服务帐户就是其购买帐户。 同样,当游戏显示 Xbox 服务登录流时,Xbox 服务帐户可能会切换为不同于 Microsoft Store 帐户的帐户。 这些导致帐户不匹配的情形有可能是有意为之。 如果无法正确设计和处理在玩游戏的帐户与当前登录到 Microsoft Store 的帐户之间可以切换或不匹配的情况,可能会导致用户因无法收到购买的游戏内物品而产生不满,并且需要提供成本高昂的客户支持服务。

以下文章介绍了如何对此类情况进行规划、处理和缓解:使用一个用户帐户登录到游戏中,使用另一个帐户登录到 Microsoft Store。

注意

上述情形不会在 Xbox 主机上造成问题。 XStoreContext 将始终绑定到你用于创建上下文的 XUser 帐户。 因此,XStore API 和事务将始终绑定到应为游戏中的活动用户的 XUser

注意

在开发人员沙盒中进行测试时,此操作无效,并且 Microsoft Store 凭据始终绑定到用以登录 Xbox 应用的帐户。 因此,只能在生产/零售环境中测试和查看此情景。 有关详细信息,请参阅测试不匹配的帐户情景

一般指南

未启用 Xbox 服务的游戏(即使用 Xbox 服务帐户代表游戏用户)应计划并了解购买帐户(用于登录 Microsoft Store 的 MSA)随时可能会更改。 因此,上玩家在游戏内购买易耗品时,游戏应立即启动商务流,以查询购买的易耗品并使用(消耗)该物品。 然后,游戏或游戏服务将更新并跟踪该用户的易耗品余额。 这类似于移动游戏商务,其中主设备帐户是付费帐户,但游戏帐户(不管是什么)将获取购买的游戏内额度。

如需更多指导,请参阅在服务中管理易耗品

支持 Xbox 服务的游戏应决定是支持 Xbox 服务与 Microsoft Store 之间的不匹配帐户 (MSA),还是强制用户同步帐户以启用游戏内内容购买和使用。 Windows 报告的遥测数据表明,10-15% 的 Xbox 服务用户使用不同于 Windows 会话中的 Xbox 服务的 MSA 来登录 Microsoft Store 应用。 因此,建议为此用户组支持帐户不匹配的情形。 但是,如果游戏的设计、系统和商务构建在 Xbox 服务帐户也是购买帐户的假设之上,则可以执行一些步骤来检查 MSA 帐户是否在 Xbox 服务与 Microsoft Store 之间实现了同步。 例如,如果一款游戏使用相同的游戏服务来同时支持 Xbox 主机版和 Windows 电脑版,便有可能希望确保帐户同步。 同样,如果一款游戏最初是在 Xbox 上发布并移植到电脑上的,则有可能围绕相同的游戏帐户和商业标识进行设计。 下面的部分概述了在启用 Xbox 服务的游戏中处理不匹配帐户的具体含义和问题。

示例方案

你的 Microsoft 帐户 (MSA) 已用于登录到 Windows 电脑和 Microsoft Store 应用。 你通过 Microsoft Store(或通过 PC 版 Game Pass 下载)购买了已启用 Xbox 服务的游戏并安装该游戏。 启动游戏时,你选择与登录 Microsoft Store 的帐户具有相同凭据 (MSA) 的 Xbox 服务帐户。 当你购买游戏内易耗品时,系统将在 Microsoft Store 服务中向你的帐户收费,并记入预期的易耗品数量。 游戏或游戏的后端服务可查询你的权利、查看和使用易耗品,并将该产品或价值授予你的游戏内帐户。

稍后,你的孩子也想玩这款游戏,并使用他们自己的 Microsoft 帐户在游戏中登录了 Xbox 服务。 Microsoft Store 应用仍然是使用你的 Microsoft 帐户登录的。 孩子在游戏内购买了你之前购买的同一易耗品。 系统会在 Microsoft Store 中再次向你的 Microsoft 帐户收费并进行贷记。 游戏或后端服务可基于 XStoreContext 查询新权利,并在帐户的存储结果中看到易耗品。 游戏或后端服务可使用该易耗品,并将该产品授予活动的玩家,在此实例中,该玩家现在是你孩子的帐户。

最终结果是系统会向你的帐户收费,但游戏会将游戏内产品或价值提供给你孩子的帐户,而不是你的帐户。

使用 X 令牌时出现的服务器到服务器问题

使用 Xbox 服务的游戏有权使用 X 令牌代表玩游戏的用户从其后端服务进行调用。 这尤其适用于查询用户拥有的产品和按照最佳做法在游戏中实现易耗品商务系统。 但是,委派的身份验证 X 令牌将绑定到正在玩游戏的 Xbox 服务用户帐户。 因此,在使用 X 令牌对 Microsoft Store API 进行服务器到服务器调用时,将无法处理上述帐户不匹配的情形。 查询结果将仅返回 Xbox 服务帐户在登录到 Microsoft Store 时的 MSA 购买信息。

使用用户 Microsoft Store ID 的服务器到服务器身份验证

若要处理帐户不匹配的情形,对 Microsoft Store API 的服务到服务调用必须使用用户 Store ID 进行身份验证。 用户 Store ID 是从客户端获取的安全令牌,因此它表示当时登录到 Microsoft Store 的帐户的身份。 然后,它将在 Microsoft Store API 的身份验证流中使用,以代表用户。

有关详细信息,请参阅通过用户 Microsoft Store ID 为电脑游戏进行身份验证

要求同步帐户以支持游戏内商务时的建议

建议启用 Xbox 服务的游戏支持不匹配帐户情形,但这并非强制要求。 正在运行的游戏可以执行验证检查,以了解用户正用来玩游戏的 Xbox 服务帐户是否与登录到 Microsoft Store 的同一 MSA 匹配,从而允许游戏在它们不相同时阻止游戏内交易和购买。 这还允许游戏服务仅通过 Xbox 服务帐户直接拥有的服务到服务调用来处理和使用物品。 游戏可以使用 XUserIsStoreUser 函数检查帐户是否不匹配。

如果你选择要求用户同步其登录到 Xbox 服务和 Microsoft Store 的帐户,则游戏必须提供相关 UI 和指导,以便用户在其帐户不同时了解该情况以及解决问题的方法。

下面是有关如何完成此操作的建议:

  • 提早在游戏 UI 中通知用户,让其了解其登录到 Microsoft Store 的帐户与玩游戏的 Xbox 服务帐户不同。
  • 向其说明只有在登录 Microsoft Store 的帐户与其 Xbox 服务帐户相同的情况下,为游戏购买的附加内容或其他内容才能正常使用。
  • 请注意,除非这两个帐户相同,否则将无法从游戏内商店购物。
  • 提供相关说明,指导用户转到 Microsoft Store 应用并使用用于 Xbox 服务的同一帐户登录。
  • 提供相关说明,指导用户转到 Xbox 应用并设置使用 Xbox 服务帐户登录到 Microsoft Store 的首选项。

测试不匹配的帐户情景

如前所述,不匹配的帐户情景在开发沙盒中将无效且不可测试。 这是因为应用商店 API 的标识和结果将绑定到在开发沙盒中登录到电脑上 Xbox 应用的帐户。 因此,只能在生产/零售环境中测试或验证不匹配的帐户情景。 为此,应使用 RETAIL 环境的测试帐户在合作伙伴中心中设置专用外部测试版组。 然后,你可以将游戏或测试游戏发布到 RETAIL,其中只有该外部测试版组中的帐户可以查看它。 这将允许你测试在 Xbox 应用和 Microsoft Store 应用之间登录的多个帐户的情景。

另请参阅

商业概述

管理来自服务的产品

XStore API 参考