XR-045:Xbox 网络和帐户特权 *

版本 2.0 - 03/01/2023

Xbox 网络向用户提供针对其自身和其孩子的期望级别的隐私和在线安全。 为了兑现该承诺,游戏必须检查 Xbox 网络服务的权限,以便在 Xbox 网络服务上或某一游戏体验中完成某些操作。

虽然所有帐户都要检查和遵循特权,但请务必特别注意子女帐户的体验和期望。 对于子女帐户,由于孩子的家庭组织者(家长或监护人)基于年龄的默认设置和/或配置,因此可能会阻止对某些活动的限制。 但是,对于某些活动,子女无法自行进行更改,并且游戏应调用必要的系统 UI,以允许青少年玩家通过该关联活动的审批流程请求例外待遇。 例如,在这种情况下,可能会阻止青少年玩家进行全球多人游戏,但家庭家长或监护人可以通过系统 UI 批准特定游戏的多人游玩;然后,孩子就可以并且应该能够访问该特定游戏的此游戏模式。

活动 ID 特权名称 注意
在一个多人游戏会话中玩游戏 254 XPRIVILEGE_MULTIPLAYER_SESSIONS 允许一个用户在下列等情况下与真实用户(而不是机器人)一起加入在线多人游戏会话:同一会话中的同步玩家对玩家游戏、异步的回合制游戏、基于团队的游戏、用户启动的匹配、发送或接受邀请、正在进行中的加入会话。 请注意,此权限与在同一设备上运行的本地多人游戏无关。
跨网络游戏会话玩游戏 185 AuthPrivileges.CrossNetworkPlay 允许用户在以下情况中与未登录到 Xbox 服务的其他真实玩家一同参与游戏会话:同一会话中的同步玩家对玩家游戏、异步的回合制游戏、基于团队的游戏、用户启动的匹配、发送或接受邀请、加入正在进行的会话。
与任何人通信 252 XPRIVILEGE_COMMUNICATIONS 允许用户通过语音或文本与任何其他 Xbox Live 用户通信。
共享的游戏会话 189 XPRIVILEGE_SESSIONS 允许用户在共享环境中或在游戏是混合免费玩游戏和付费多人游戏的情况下参与连接的单玩家体验,并使用此特权来封闭这些体验 Xbox 主机。 单玩家体验不得具有权限 252 或 254(分别是通信和多人游戏)所涵盖的任何功能。 对此权限的使用是一项要求平台许可的游戏功能。
用户生成的内容 (UGC) 247 XPRIVILEGE_USER_CREATED_CONTENT 允许用户在线查看其他用户的 UGC、下载其他用户的 UGC 或者在线共享其自己的 UGC。 这并不会限制对之前下载的 UGC 的使用。
共享到某一社交网络 220 XPRIVILEGE_SOCIAL_NETWORK_SHARING 仅限 Xbox 主机: 允许用户在 Xbox Live 外共享信息,包括游戏进度、Kinect 生成的内容以及游戏剪辑等。

可以配置免费试玩游戏、演示版或 beta 版,以允许非 Game Pass 订阅者的玩家进行多人游戏(ID 254)。 此操作通过服务端配置完成,可以通过联系 Microsoft 代表启动。 这些游戏必须继续检查多人游戏特权,以确保尊重家长控制和玩家选择。

详细信息

注意

有关技术指南和最佳做法的详细信息,请参阅 Xbox 服务用户权限的客户端使用 文档。

如果你的服务处理 Xbox 网络颁发的令牌,你应对你的服务强制实施以下规定:会话中的用户具有适当特权,以便通过检查该令牌内针对这些用户的“prv”声明执行请求的操作。

如果某一游戏提供一个或多个上表中列出的活动,则该游戏必须检查与特定活动相关联的权限。 如果某一用户不具有该权限,则不得允许该用户使用关联的活动。 针对会话/操作的持续期间或刷新 Xbox 网络令牌之前的时间(取这两者之间的较短者)授予特权。

根据开发平台(GDK、XDK、XSAPI)的不同,游戏应调用相应的 API,以确保调用 (1) 系统游戏可调用 UI (TCUI) 来通知用户被阻止的特权以及向家长或监护人请求某些特权(如果在子女帐户上)的特权;或者 (2) 提供说明性和可操作的错误消息。

在电脑或 Xbox 主机上使用 GDK:要检查用户是否具有使用 GDK 的权限,游戏应使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API。 有关使用模式和上下文处理的特定信息,可在 GDK 文档中 Xbox 服务用户权限概述获取。

使用 Xbox One XDK:要查看某一用户是否具有某项 Xbox One 权限,游戏需使用 Store::Product::CheckPrivilegeAsync API。 如果该权限检查是由于执行了某一用户操作(例如,进入多人游戏模式)而引发的,则 attemptResolution 传输必须设置为 true(或者完全不设置)。 该平台将对权限进行检查,并且在用户不具有权限时,尝试确定有关原因。

如果该 API 返回 false,则用户不具有该权限并且系统没有成功解决有关问题。 在这种情况下,该游戏必须阻止权限行为,但可以假定系统已相应通知用户他们不具有针对该活动的适当权限或者存在与用户权限有关的问题。

对于出于并非用户操作的原因但作为无提示后台调用的一部分或者由于对 UX 进行修饰(举例来讲)而执行权限检查的情况,应通过将 attemptResolution 设置为 false 来调用该 API。 因此,不会向用户发送消息并且系统不会进行干预以便纠正任何权限问题。

直接通过 UWP、Win32、手机或其他平台使用 XSAPI:如果缺少“prv”声明,则用户将不具有权限,并且游戏将禁止用户继续执行权限行为。 如果该检查是由请求对该权限行为(例如,尝试开始或加入某一多人游戏会话)的用户触发的,则该游戏应该显示一条提示性消息,让用户知道他们不能参与。 建议的消息如下所示:

实现要求

活动 ID 特权名称 如何处理?
在一个多人游戏会话中玩游戏 254 XPRIVILEGE_MULTIPLAYER_SESSIONS * GDK:游戏将调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。
* XDK:游戏将调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。
* XSAPI:建议的消息“抱歉,当前禁止你玩在线多人游戏。”
* 如果你的帐户由家长或监护人管理,他们可以在“设置”>“>帐户>”>“家长设置>”>“管理家庭成员”中为你的档案自定义 Xbox 隐私设置。
跨网络游戏会话玩游戏 185 AuthPrivileges.CrossNetworkPlay * GDK:游戏将调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。
* XDK:游戏将调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。
* XSAPI:建议的消息“抱歉,当前禁止你与 Xbox 网络以外的其他平台上的人士玩游戏。”
* 如果你的帐户由家长或监护人管理,他们可以在“设置”>“>帐户>”>“家长设置>”>“管理家庭成员”中为你的档案自定义 Xbox 隐私设置。
与任何人通信 252 XPRIVILEGE_COMMUNICATIONS * GDK:游戏将调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。
* XDK:游戏将调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。
* XSAPI:建议的消息“抱歉,当前禁止你与 Xbox 网络上的其他人士交谈。”
* 如果你的帐户由家长或监护人管理,他们可以在“设置”>“>帐户>”>“家长设置>”>“管理家庭成员”中为你的档案自定义 Xbox 隐私设置。
共享的游戏会话 189 XPRIVILEGE_SESSIONS * GDK:游戏将调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。
* XDK:游戏将调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。
* XSAPI:建议的消息“抱歉,当前禁止你玩在线多人游戏。”
* 如果你的帐户由家长或监护人管理,他们可以在“设置”>“>帐户>”>“家长设置>”>“管理家庭成员”中为你的档案自定义 Xbox 隐私设置。
用户生成的内容 (UGC) 247 XPRIVILEGE_USER_CREATED_CONTENT * GDK:游戏将调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。
* XDK:游戏将调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。
* XSAPI:建议的消息“抱歉,当前禁止你查看其他人士发出的内容。”
* 如果你的帐户由家长或监护人管理,他们可以在“设置”>“>帐户>”>“家长设置>”>“管理家庭成员”中为你的档案自定义 Xbox 隐私设置。
共享到某一社交网络 220 XPRIVILEGE_SOCIAL_NETWORK_SHARING * GDK:游戏将调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。
* XDK:游戏将调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 store::Product::CheckPrivilegeAsync API)。
* XSAPI:建议的消息“抱歉,当前禁止你在社交网络上共享。”
* 如果你的帐户由家长或监护人管理,他们可以在“设置”>“>帐户>”>“家长设置>”>“管理家庭成员”中为你的档案自定义 Xbox 隐私设置。

Xbox 网络连接问题:如果游戏由于 Xbox 服务无法访问而收到故障(或者通过该 API,或者因为它无法检索某一 Xbox Live 令牌),则该游戏应阻止对请求的操作的访问。 在此类情况下,该游戏应正常关闭,如 XR-074“丢失与 Xbox 服务和合作伙伴服务的连接”中所述。

最佳做法

其他资源

有关特权和用户令牌的详细信息,请参阅 Microsoft 游戏开发工具包 (GDK) 或 Xbox 应用程序开发工具包文档中的“用户令牌”。

出于此 XR 的目的,一个社交网络是 Xbox 网络外部的一个站点或服务,它默认允许某一个体与其他用户共享内容。 如果外部站点上的默认选项支持与好友或每个人共享,则出于此 XR 的目的,外部站点没有必要允许用户选择在上传时限制共享。

例外

已付费的交易视频产品可向所有 Xbox 用户提供,而与其视频内容权限设置无关。 如果该应用既提供付费内容,也提供已付费的交易视频产品,则付费内容必须遵守此要求。

如果该应用是在 Xbox 平台上提供了该应用的国家/地区内的公共服务广播器,则所有非商业内容产品和服务必须向该国家/地区内的所有 Xbox 用户提供,而与用户的视频内容权限设置无关。

对于在 Xbox One 主机和非主机设备之间提供异步多人游戏的游戏,不要求这些游戏针对非主机设备上的体验检查多人游戏权限。

认证测试案例

045-01 尊重用户特权

测试步骤

  1. 登录到某一 Xbox 档案并启动游戏。
  2. 对于在 XR 备注中确定的每个权限,确定游戏是否支持关联的行为。
  3. 对于在步骤 [2] 中确定的每个适用权限的每个可能设置,执行以下操作:
  • 退出游戏并更改权限的用户设置。
  • 重新启动主机。
  • 登录到相同的档案并且启动该游戏。
  • 访问该游戏的所有相关区域,使用与权限相关的所有游戏功能,并且确认游戏尊重用户的当前权限设置。
  • 尝试使用 Silver Xbox 档案访问所有离线和联机区域。

预期结果
游戏必须遵守用户的权限设置。

通过示例

  1. 该游戏遵守用户的权限设置。
  2. 该游戏将部分允许的权限设置视为该权限被禁用/拒绝(例如,在用户生成的内容 (UGC) 权限设置为“仅好友”时,该游戏的行为就像该权限设置为“阻止”一样)。
  3. 对于使用 XDK 的游戏,游戏将调用系统 UI 来警告用户存在的任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。 无法调用系统 UI(特权 252、189、247),游戏将显示一个提示性消息,让用户知道他们不能参与。
  4. 对于使用 GDK 的游戏,游戏将调用系统 UI 来警告用户存在任何权限冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。 无法调用系统 UI(特权 252、189、247),游戏将显示一个提示性消息,让用户知道他们不能参与。
  5. 对于使用 XSAPI 的游戏,游戏将显示一个提示性消息,让用户知道他们不能参与。

失败示例

  1. 游戏保留用户的权限设置,并且不会在其已更改后反映用户的实际权限。
  2. 该游戏将部分允许的权限设置视为该权限设置为限制性最低的设置(例如,在用户生成的内容 (UGC) 权限设置为“仅好友”时,该游戏的行为就像该权限设置为“允许”一样)。
  3. 对于使用 XDK 或 GDK 的游戏,游戏将使用游戏中消息来警告用户存在任何权限冲突,并且不显示系统 UI。
  4. 对于使用 XSAPI 的游戏,游戏将不显示提示性消息来告知用户知道其不能参与。

045-02 尊重用户特权 - Xbox 家庭

测试设置和配置
包含以下 Microsoft 帐户的 Xbox 家庭

  • 指定为组织者的成人(超过 18 岁)。
  • 具有儿童默认特权设置的儿童(低于 13 岁):
活动 儿童默认特权设置
您可以加入多人游戏 Block
你可以加入跨网络游戏 Block
可以使用语音、文本或邀请进行通信 好友
可以在 Xbox 网络之外进行语音和文本通信 Block
您可查看并上传社区作品 Block
你可在 Xbox 之外进行共享 Block

介绍人以及链接

测试步骤

  1. 登录成人和儿童 Microsoft 帐户,并使用子女帐户启动游戏。
  2. 对于在 XR 备注中确定的每个权限,确定游戏是否支持关联的行为。
  3. 对于在步骤 [2] 中确定的每个适用权限的每个可能设置,执行以下操作:
  • 根据帐户特权验证是允许/不允许关联的活动。 例如:游戏支持多人游玩,并且子女帐户已阻止多人游戏特权。 验证游戏是否阻止了子女的所有多人游戏活动,并且当孩子尝试参与多人游戏活动时,会显示家长特权提示(系统 TCUI)。
  • 退出游戏并更改游戏支持的特权活动的用户子女的特权设置;从阻止到允许。 例如:将多人游戏或用户生成的内容从“阻止”更改为“允许”。
  • 重新启动主机。
  • 登录到相同的档案并且启动该游戏。
  • 访问该游戏的所有相关区域,使用与权限相关的所有游戏功能,并且确认游戏尊重用户的当前权限设置。 例如:游戏支持多人游玩。 子女已被阻止,但现在已被授权多人游玩。 游戏正确允许孩子访问多人游戏模式。
  1. 登录到控制台的家长帐户重复步骤 [2]-[3]。

预期结果
游戏必须遵守所有 Xbox 家庭成员的特权设置。

通过示例

  1. 游戏遵守儿童的特权设置。
  2. 当允许该活动的特权时,游戏允许儿童参与活动。
  3. 当阻止该活动的特权时,游戏不允许儿童参与活动。
  4. 游戏允许儿童参与被阻止的活动,但家长(通过家长特权 UI)允许该活动的特权。
  5. 游戏不允许儿童参与被阻止的活动,并且家长(通过家长特权 UI)不允许该活动的特权。
  6. 该游戏将部分允许的权限设置视为该权限被禁用/拒绝(例如,在用户生成的内容 (UGC) 权限设置为“仅好友”时,该游戏的行为就像该权限设置为“阻止”一样)。
  7. 对于使用 XDK 的游戏,游戏将调用系统 UI 来警告用户存在的任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。 无法调用系统 UI(特权 252、189、247),游戏将显示一个提示性消息,让用户知道他们不能参与。
  8. 对于使用 GDK 的游戏,游戏将调用系统 UI 来警告用户存在任何权限冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。 无法调用系统 UI(特权 252、189、247),游戏将显示一个提示性消息,让用户知道他们不能参与。
  9. 对于使用 XSAPI 的游戏,游戏将显示一个提示性消息,让用户知道他们不能参与。

失败示例

  1. 游戏不遵守儿童的特权设置。
  • 示例:游戏支持多人游玩,并允许被阻止多人游戏的儿童访问多人游戏模式。
  1. 游戏不会调用适当的 UI 来发出警报并通知儿童存在特权冲突。
  • 示例:游戏支持多人游玩,但是当特权被阻止时,永远不会提示孩子提供家长特权。
  1. 当阻止该活动的特权时,游戏允许儿童参与活动。
  2. 当允许该活动的特权时,游戏不允许儿童参与活动。
  3. 游戏允许儿童参与被阻止的活动,并且家长(通过家长特权 UI)不允许该活动的特权。
  4. 游戏不允许儿童参与被阻止的活动,并且家长(通过家长特权 UI)允许该活动的特权。
  5. 游戏保留用户的权限设置,并且不会在其已更改后反映用户的实际权限。
  • 例如:游戏支持多人游玩。 已阻止儿童帐户进行多人游戏,但由家长通过系统 UI 授予特权。 即使已授予特权,游戏仍会继续阻止多人游戏。
  1. 游戏将部分允许权限设置视为其最不严格的权限设置。 例如:当用户生成的内容 (UGC) 特权设置为“仅好友”时,游戏的行为就像特权设置为“允许”一样。
  2. 对于使用 XDK 的游戏,游戏不会调用系统 UI 来警告用户存在的任何特权冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。 无法调用系统 UI(特权 252、189、247),游戏不会显示一个提示性消息,让用户知道他们不能参与。
  3. 对于使用 GDK 的游戏,游戏不会调用系统 UI 来警告用户存在任何特权冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。 无法调用系统 UI(特权 252、189、247),游戏不会显示一个提示性消息,让用户知道他们不能参与。
  4. 对于使用 XSAPI 的游戏,游戏将不显示提示性消息来告知用户知道其不能参与。

更改历史记录

日期 文档版本 更改说明
2023 年 3 月 1 日 2.0 已更新以包含 Xbox 家庭成员帐户权限的要求和验证。

添加了测试用例 045-02 以验证 Xbox 家庭成员的特权设置。