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

# XR-045 XBOX 网络和账户权限

> 游戏必须检查 XBOX 网络服务的权限以完成某些操作,并且必须尊重针对儿童账户的 XBOX 家庭成员权限设置。

# XR-045:XBOX 网络和账户权限 \*

版本 2.0,2023/03/01

XBOX 网络为用户及其孩子提供预期的隐私和在线安全水平。为了兑现这一承诺,游戏必须检查 XBOX 网络服务的权限,以便在 XBOX 网络服务或游戏体验中完成某些操作。

尽管权限检查和遵守适用于所有账户,但请特别注意儿童账户的体验和期望。对于儿童账户,某些活动可能会因基于年龄的默认设置和/或儿童家庭组织者(父母或监护人)的配置而被限制。儿童无法自行进行更改,但对于某些活动,游戏可能而且预期会调用必要的系统界面,以便年幼的玩家可以通过审批流程为该相关活动请求例外。在这种情况下,例如,年幼的玩家可能会被全局阻止参与多人游戏,但家庭中的父母或监护人可以通过系统界面为特定游戏批准多人游戏;然后儿童就应该能够在该特定游戏中访问该游戏模式。

| 活动            | 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 代表来发起。这些游戏必须继续检查多人游戏权限,以确保尊重家长控制和玩家选择。

## 更多信息

<Note>
  有关技术指导和最佳实践的详细信息,请参阅"XBOX 服务用户权限的客户端使用"文档。
</Note>

如果您的服务处理 XBOX 网络发出的令牌,您应在服务中通过检查令牌内那些用户的 `prv` 声明,强制会话中的用户具有执行请求的操作的适当权限。

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

根据开发平台(GDK、XDK、XSAPI),游戏需要调用相应的 API 以确保以下之一:(1) 调用系统界面,该界面通知用户被阻止的权限,并在儿童账户上提供从父母或监护人请求某些权限的许可选项;或者 (2) 提供有指导性和可操作性的错误消息。

**在 PC 或 XBOX 控制台上使用 GDK:** 要使用 GDK 检查用户是否具有权限,游戏应使用 `XUserCheckPrivilege` 和 `XUserResolvePrivilegeWithUiAsync` API。

**使用 XBOX One XDK:** 要在 XBOX One 上检查用户是否具有权限,游戏使用 `Store::Product::CheckPrivilegeAsync` API。如果权限检查是由用户操作(例如进入多人游戏模式)引起的,则 `attemptResolution` 参数必须设置为 `true`(或根本不设置)。平台检查权限,如果用户没有该权限,则尝试确定原因。

如果 API 返回 `false`,则用户没有该权限,系统未成功解决问题。在这种情况下,游戏必须阻止该特权活动,但可以假设系统已适当地通知用户他们没有该活动的适当权限或该用户的权限存在问题。

在权限检查不是由用户操作触发,而是作为静默后台调用的一部分或用于装饰用户体验的情况下,应使用 `attemptResolution` 设置为 `false` 调用 API。因此,不会向用户发送消息,系统也不会干预来纠正任何权限问题。

**在 UWP、Win32、移动或其他平台上直接使用 XSAPI:** 如果 `prv` 声明中缺少该权限,则用户没有该权限,游戏应阻止用户继续进行特权活动。如果检查是由用户请求访问特权活动(例如尝试开始或加入多人游戏会话)触发的,则游戏应显示信息性消息以让他们知道他们无法参与。

## 实现要求

| 活动            | ID  | 权限名称                                | 如何处理                                                                                                                                                                                                                                               |
| ------------- | --- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 参与多人游戏会话      | 254 | `XPRIVILEGE_MULTIPLAYER_SESSIONS`   | **GDK/XDK:** 游戏调用系统界面提醒用户任何权限冲突(GDK 中的 `XUserCheckPrivilege` 和 `XUserResolvePrivilegeWithUiAsync`;XDK 中的 `Store::Product::CheckPrivilegeAsync`)。**XSAPI:** 建议消息"抱歉,您目前无法玩在线多人游戏。"如果账户由父母或监护人管理,他们可以在"设置">"账户">"家庭设置">"管理家庭成员"中为该配置文件自定义 XBOX 隐私设置。 |
| 参与跨网络游戏会话     | 185 | `AuthPrivileges.CrossNetworkPlay`   | **GDK/XDK:** 游戏调用系统界面提醒用户任何权限冲突。**XSAPI:** 建议消息"抱歉,您目前无法与 XBOX 网络以外平台上的人一起游戏。"                                                                                                                                                                     |
| 与任何人的通信       | 252 | `XPRIVILEGE_COMMUNICATIONS`         | **GDK:** 游戏必须使用 `XUserCheckPrivilege` 并显示信息性消息。**XDK:** 游戏调用系统界面。**XSAPI:** 建议消息"抱歉,您目前无法与 XBOX 网络上的其他人交谈。"                                                                                                                                        |
| 共享游戏会话        | 189 | `XPRIVILEGE_SESSIONS`               | **GDK:** 游戏必须使用 `XUserCheckPrivilege` 并显示信息性消息。**XDK:** 游戏调用系统界面。**XSAPI:** 建议消息"抱歉,您目前无法玩在线多人游戏。"                                                                                                                                                 |
| 用户生成的内容 (UGC) | 247 | `XPRIVILEGE_USER_CREATED_CONTENT`   | **GDK:** 游戏必须使用 `XUserCheckPrivilege` 并显示信息性消息。**XDK:** 游戏调用系统界面。**XSAPI:** 建议消息"抱歉,您目前无法查看其他人制作的内容。"                                                                                                                                              |
| 分享到社交网络       | 220 | `XPRIVILEGE_SOCIAL_NETWORK_SHARING` | **GDK/XDK:** 游戏调用系统界面。**XSAPI:** 建议消息"抱歉,您目前无法在社交网络上分享。"                                                                                                                                                                                           |

**XBOX 网络连接问题:** 如果游戏由于 XBOX 服务无法访问而收到失败(通过 API 或因为无法检索 XBOX Live 令牌),则游戏应阻止对请求操作的访问。在这种情况下,游戏应优雅地失败,如 XR-074"XBOX 和合作伙伴服务连接丢失"中所述。

## 最佳实践

## 其他资源

有关权限和用户令牌的更多信息,请参阅 XBOX 游戏开发工具包 (GDK) 中的"用户令牌"或 XBOX 应用程序开发工具包文档。

出于此 XR 的目的,社交网络是指 XBOX 网络之外的站点或服务,允许个人默认与其他用户分享内容。如果外部站点上的默认选项启用了与好友或所有人分享,则出于此 XR 的目的,外部站点无需允许用户在上传时选择限制分享。

## 例外

无论 XBOX 用户的视频内容权限设置如何,都可以向所有 XBOX 用户提供付费交易视频产品。如果应用同时提供高级内容和付费交易视频产品,则高级内容必须遵守此要求。

如果应用是在其提供 XBOX 平台的国家/地区的公共服务广播公司,则必须向该国家/地区的所有 XBOX 用户提供所有非商业化内容产品,而不管用户的视频内容权限设置如何。

在 XBOX One 控制台和非控制台设备之间提供异步多人游戏的游戏,不需要为非控制台设备上的体验检查多人游戏权限。

## 认证测试用例

### 045-01 尊重用户权限

**测试步骤**

1. 登录 XBOX 配置文件并启动游戏。
2. 对于 XR 备注中确定的每个权限,识别游戏是否支持相关活动。
3. 对于步骤 2 中确定的每个适用权限的每个可能设置,执行以下操作:
   * 退出游戏并更改用户的权限设置。
   * 重启控制台。
   * 登录同一配置文件并启动游戏。
   * 访问游戏的所有相关区域,使用与权限相关的所有游戏功能,并验证游戏尊重用户当前的权限设置。
   * 尝试使用 Silver XBOX 配置文件访问所有离线和在线区域。

**预期结果**

游戏必须尊重用户的权限设置。

**通过示例**

1. 游戏尊重用户的权限设置。
2. 游戏将部分允许的权限设置视为权限已被禁用/不允许(例如,当 UGC 权限设置为"仅好友"时,游戏行为如同权限设置为"阻止")。
3. 对于使用 XDK 的游戏,游戏调用系统界面提醒用户任何权限冲突。当无法调用系统界面时(权限 252、189、247),游戏显示信息性消息。
4. 对于使用 GDK 的游戏,游戏调用系统界面提醒用户任何权限冲突。当无法调用系统界面时(252、189、247),游戏显示信息性消息。
5. 对于使用 XSAPI 的游戏,游戏显示信息性消息。

**失败示例**

1. 游戏保留了用户的权限设置,在权限更改后未反映用户的实际权限。
2. 游戏将部分允许的权限设置视为其最不严格的设置(例如,UGC 设置为"仅好友"表现为"允许")。
3. 对于使用 XDK 或 GDK 的游戏,游戏使用游戏内消息提醒用户任何权限冲突,并且不显示系统界面。
4. 对于使用 XSAPI 的游戏,游戏未显示信息性消息以让用户知道他们无法参与。

### 045-02 尊重用户权限 - XBOX 家庭

**测试设置和配置**

XBOX 家庭,包括以下 Microsoft 账户:

* 指定为组织者的成人(大于 18 岁)。
* 具有\_儿童默认\_权限设置的儿童(小于 13 岁):

| 活动                        | 儿童默认权限设置 |
| ------------------------- | -------- |
| 您可以加入多人游戏                 | 阻止       |
| 您可以加入跨网络游戏                | 阻止       |
| 您可以通过语音、文本或邀请进行通信         | 好友       |
| 您可以通过语音和文本在 XBOX 网络之外进行通信 | 阻止       |
| 您可以查看和上传社区创作              | 阻止       |
| 您可以在 XBOX 之外分享            | 阻止       |

**测试步骤**

1. 登录成人和儿童 Microsoft 账户,并使用儿童账户启动游戏。
2. 对于 XR 备注中确定的每个权限,识别游戏是否支持相关活动。
3. 对于步骤 2 中确定的每个适用权限的每个可能设置,执行以下操作:
   * 验证根据账户权限允许/不允许相关活动。例如:游戏支持多人游戏,而儿童账户的多人游戏权限被阻止。验证游戏阻止儿童的所有多人游戏活动,并且当儿童尝试参与多人游戏活动时显示家长权限提示(系统界面)。
   * 退出游戏并更改儿童的权限活动的权限设置,即游戏支持的活动;从阻止变为允许。
   * 重启控制台。
   * 登录同一配置文件并启动游戏。
   * 访问游戏的所有相关区域,使用与权限相关的所有游戏功能,并验证游戏尊重用户当前的权限设置。
4. 使用**未**登录控制台的父母账户重复步骤 2-3。

**预期结果**

游戏必须尊重所有 XBOX 家庭成员的权限设置。

**通过示例**

1. 游戏尊重儿童的权限设置。
2. 当该活动的权限被允许时,游戏允许儿童参与该活动。
3. 当该活动的权限被阻止时,游戏不允许儿童参与该活动。
4. 游戏允许儿童参与被阻止但父母允许(通过家长权限界面)该活动权限的活动。
5. 游戏不允许儿童参与被阻止且父母不允许该活动权限的活动。
6. 游戏将部分允许的权限设置视为权限已被禁用/不允许。
7. 对于使用 XDK 的游戏,游戏调用系统界面提醒用户任何权限冲突。当无法调用系统界面时(权限 252、189、247),游戏显示信息性消息。
8. 对于使用 GDK 的游戏,游戏调用系统界面提醒用户任何权限冲突。当无法调用系统界面时,游戏显示信息性消息。
9. 对于使用 XSAPI 的游戏,游戏显示信息性消息。

**失败示例**

1. 游戏不尊重儿童的权限设置。
2. 游戏未调用适当的界面来提醒和通知儿童权限冲突。
3. 当该活动的权限被阻止时,游戏允许儿童参与该活动。
4. 当该活动的权限被允许时,游戏不允许儿童参与该活动。
5. 游戏允许儿童参与被阻止且父母不允许该活动权限的活动。
6. 游戏不允许儿童参与被阻止且父母允许该活动权限的活动。
7. 游戏保留了用户的权限设置,在权限更改后未反映用户的实际权限。
8. 游戏将部分允许的权限设置视为其最不严格的设置。
9. 对于使用 XDK 的游戏,游戏未调用系统界面。
10. 对于使用 GDK 的游戏,游戏未调用系统界面。
11. 对于使用 XSAPI 的游戏,游戏未显示信息性消息。

## 更改历史

| 日期             | 文档版本 | 更改描述                                                         |
| -------------- | ---- | ------------------------------------------------------------ |
| 2023 年 3 月 1 日 | 2.0  | 更新以包括 XBOX 家庭成员账户权限的要求和验证。添加了测试用例 045-02 以验证 XBOX 家庭成员的权限设置。 |


## Related topics

- [XBOX 认证概览](/zh-CN/publishing/certification/overview.md)
- [PC 和移动游戏的 XBOX 要求测试用例](/zh-CN/publishing/certification/pc-policy-tests.md)
- [PC 和移动认证要求以及最常见的失败](/zh-CN/publishing/certification/pc-certification.md)
- [XR-007 跨网络游戏、数据使用和配套应用](/zh-CN/publishing/certification/xr/xr-007.md)
- [XR-070 好友列表](/zh-CN/publishing/certification/xr/xr-070.md)
