> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> 游戏必须向 XBOX 网络服务检查权限,才能在 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 代表来启动。这些游戏必须继续检查多人游戏权限,以确保遵循家长控制和玩家选择。

## 详细信息

> [!NOTE]
>
> 有关技术指南和最佳做法的详细介绍,请参阅 [XBOX 服务用户权限的客户端使用](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/identity/privileges/concepts/live-user-privileges-client.md)文档。

如果你的服务处理 XBOX 网络颁发的令牌,则应在你的服务上通过检查令牌中会话用户的 "prv" 声明,强制要求这些用户具有执行所请求操作的相应权限。

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

根据开发平台(GDK、XDK、XSAPI)的不同,游戏应调用相应的 API,以确保 (1) 调用系统 UI,告知用户被阻止的权限,并在用户为儿童帐户时提供向父母或监护人请求某些权限的途径;或者 (2) 提供规范且可操作的错误消息。

**在 PC 或 XBOX 主机上使用 GDK:** 要使用 GDK 检查用户是否具有某项权限,游戏应使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API。有关使用模式和上下文处理的具体信息,请参阅 GDK 文档中的 [XBOX 服务用户权限概述](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/identity/privileges/live-user-privileges-overview.md)主题。

**使用 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**:游戏必须使用 XUserCheckPrivilege API 检查权限冲突,并显示一条信息性消息,告知用户其无法与 XBOX 网络上的其他人通信。  \* **XDK**:游戏调用系统 UI 以提醒用户任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。  \* **XSAPI**:建议的消息为“抱歉,你当前被禁止与 XBOX 网络上的其他人交谈。”  \* 如果你的帐户由父母或监护人管理,他们可以在“设置”>“帐户”>“家庭设置”>“管理家庭成员”中为你的个人资料自定义 XBOX 隐私设置。 |
| 共享游戏会话 | 189 | XPRIVILEGE\_SESSIONS | \* **GDK**:游戏必须使用 XUserCheckPrivilege API 检查权限冲突,并显示一条信息性消息,告知用户其无法玩在线多人游戏。  \* **XDK**:游戏调用系统 UI 以提醒用户任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。  \* **XSAPI**:建议的消息为“抱歉,你当前被禁止玩在线多人游戏。”  \* 如果你的帐户由父母或监护人管理,他们可以在“设置”>“帐户”>“家庭设置”>“管理家庭成员”中为你的个人资料自定义 XBOX 隐私设置。 |
| 用户生成内容 (UGC) | 247 | XPRIVILEGE\_USER\_CREATED\_CONTENT | \* **GDK**:游戏必须使用 XUserCheckPrivilege 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 Game Development Kit (GDK) 或 XBOX Application Development Kit 文档中的“用户令牌”。

就本 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 以提醒用户任何权限冲突。在游戏无法调用系统 UI 的情况下(252、189、247),游戏显示一条信息性消息,告知用户其无法参与。游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API。
> 5. 对于使用 XSAPI 的游戏,游戏显示一条信息性消息,告知用户其无法参与。
>
> **失败示例**
>
> 1. 游戏保留用户的权限设置,并且在用户的实际权限更改后未反映这些更改。
> 2. 游戏将部分允许的权限设置视为该权限设置为限制最少的设置(例如,当用户生成内容 (UGC) 权限设置为“仅限好友”时,游戏的行为就像该权限设置为“允许”一样)。
> 3. 对于使用 XDK 或 GDK 的游戏,游戏使用游戏内消息提醒用户任何权限冲突,而不显示系统 UI。
> 4. 对于使用 XSAPI 的游戏,游戏未显示信息性消息来告知用户其无法参与。

**045-02 遵循用户权限 - XBOX 家庭**

> **测试设置和配置**\
> [XBOX 家庭](https://www.xbox.com/en-US/family-hub),其中包括以下 Microsoft 帐户:
>
> * 被指定为组织者的成人(年满 18 岁)。
> * 采用\_儿童默认\_权限设置的儿童(未满 13 岁):
>
> | **活动** | **儿童默认权限设置** |
> | - | - |
> | 你可以加入多人游戏 | 阻止 |
> | 你可以加入跨网络游戏 | 阻止 |
> | 你可以使用语音、文本或邀请进行通信 | 好友 |
> | 你可以在 XBOX 网络之外使用语音和文本进行通信 | 阻止 |
> | 你可以查看和上传社区创作 | 阻止 |
> | 你可以在 XBOX 之外共享 | 阻止 |
>
> **参考和链接**:
>
> * [创建 XBOX 家庭](https://account.microsoft.com/family/home)
> * [通过 Web、Family 应用或 XBOX 主机添加家庭成员](https://support.microsoft.com/en-us/account-billing/add-people-to-your-family-group-4a07b974-8103-16ad-6ea2-46549ca19e03)
> * [管理家长同意](https://support.xbox.com/en-US/help/family-online-safety/online-safety/manage-online-safety-and-privacy-settings-xbox-one)
>
> **测试步骤**
>
> 1. 登录到成人和儿童 Microsoft 帐户,并使用儿童帐户启动游戏。
> 2. 对于 XR 备注中列出的每项权限,确定游戏是否支持相关活动。
> 3. 对于步骤 \[2] 中确定的每项适用权限的每个可能设置,执行以下操作:
>
> <ul><li>根据帐户权限验证相关活动是否被允许/不被允许。*例如*:游戏支持多人游戏,而儿童帐户的多人游戏权限被阻止。验证游戏是否阻止儿童的所有多人游戏活动,并在儿童尝试参与多人游戏活动时显示家长权限提示(系统 UI)。</li>
> <li>退出游戏,并针对游戏支持的权限活动更改用户的儿童权限设置,从“阻止”更改为“允许”。*例如*:将多人游戏或用户生成内容从“阻止”更改为“允许”。</li><li>重新启动主机。</li><li>登录到同一个人资料并启动游戏。</li><li>访问游戏的所有相关区域,使用与该权限相关的所有游戏功能,并验证游戏是否遵循用户当前的权限设置。*例如*:游戏支持多人游戏。儿童之前被阻止,但现在已被授予多人游戏权限。游戏正确地允许儿童访问多人游戏模式。</li></ul>
>
> 4. 在家长帐户**未**登录到主机的情况下重复步骤 \[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. 游戏未遵循儿童的权限设置。
>
> * 示例:游戏支持多人游戏,并允许多人游戏权限被阻止的儿童访问多人游戏模式。
>
> 2. 游戏未调用适当的 UI 来提醒和告知儿童权限冲突。
>
> * 示例:游戏支持多人游戏,但在权限被阻止时,从未提示儿童获取家长许可。
>
> 3. 当某项活动的权限被阻止时,游戏允许儿童参与该活动。
>
> 4. 当某项活动的权限被允许时,游戏不允许儿童参与该活动。
>
> 5. 对于被阻止且家长未(通过家长权限 UI)允许的活动,游戏允许儿童参与。
>
> 6. 对于被阻止但家长已(通过家长权限 UI)允许的活动,游戏不允许儿童参与。
>
> 7. 游戏保留用户的权限设置,并且在用户的实际权限更改后未反映这些更改。
>
> * 示例:游戏支持多人游戏。儿童帐户的多人游戏权限被阻止,但家长通过系统 UI 授予了许可。尽管已授予该权限,游戏仍继续阻止多人游戏。
>
> 8. 游戏将部分允许的权限设置视为该权限设置为限制最少的设置。*例如*:当用户生成内容 (UGC) 权限设置为“仅限好友”时,游戏的行为就像该权限设置为“允许”一样。
> 9. 对于使用 XDK 的游戏,游戏未调用系统 UI 来提醒用户任何权限冲突(游戏必须使用 Store::Product::CheckPrivilegeAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏未显示信息性消息来告知用户其无法参与。
> 10. 对于使用 GDK 的游戏,游戏未调用系统 UI 来提醒用户任何权限冲突(游戏必须使用 XUserCheckPrivilege 和 XUserResolvePrivilegeWithUiAsync API)。当无法调用系统 UI 时(权限 252、189、247),游戏未显示信息性消息来告知用户其无法参与。
> 11. 对于使用 XSAPI 的游戏,游戏未显示信息性消息来告知用户其无法参与。

## 更改历史记录

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


## Related topics

- [XBOX 游戏的 XBOX 要求](https://docs.xbox.com/zh-CN/publishing/certification/xbox-requirements.md)
- [XR-015 管理玩家通信](https://docs.xbox.com/zh-CN/publishing/certification/xr/xr-015.md)
- [XBOX 要求和政策支持内容](https://docs.xbox.com/zh-CN/publishing/certification/xr/overview.md)
- [Beta 版和 XBOX 游戏预览版游戏的要求](https://docs.xbox.com/zh-CN/publishing/certification/cert-beta-game-preview.md)
- [最常失败的测试用例](https://docs.xbox.com/zh-CN/publishing/certification/xr-top-failing.md)
