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

# 隐私和权限概述

> 使用 XBOX 隐私服务和 XSAPI 运行聊天、视频和跨网络游戏的权限检查，并遵守静音和回避列表偏好。

使用此主题在您的游戏中检查和解决隐私和权限问题。

XBOX 隐私服务通过尊重用户偏好并提供他们所需的社交体验来保护用户。

隐私服务通过使用 XBOX 服务 API (XSAPI) 和 XBOX 服务 REST 终结点支持权限检查、静音用户和回避用户。

有关详细信息，请参阅 [XSAPI 概述](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/xbox-services-api/live-introduction-to-xbox-live-apis.md)。

> [!NOTE]
>
> 您不能使用隐私服务检索或设置用户的隐私设置。

## 权限检查

权限检查是隐私服务提供的主要功能。
这些检查通过判断某个用户是否可以对另一个用户或一组用户执行操作来发挥作用。

例如，如果您想知道某个用户是否可以与目标用户通信，隐私服务会根据一系列相关标准给出答案，包括以下场景。

* 两个用户的设置是否都允许此场景？
* 用户之间的关系是什么？
* 操作者是否位于目标用户的回避列表中？

XBOX 隐私服务支持跨网络通信权限检查。XBOX 用户可以决定是否与其他网络上的朋友（**crossNetworkFriends**）或那些网络上的所有人（**crossNetworkUsers**）通信。

隐私服务使游戏能够通过以下权限检查（CommunicateUsingText、CommunicateUsingVideo、CommunicateUsingVoice）来验证 **crossNetworkUsers** 或 **crossNetworkFriends** 是否可以与用户通信。

> [!NOTE]
>
> 跨网络通信是隐私服务权限支持的唯一跨网络场景。

有关详细信息，请参阅 [XblPrivacyCheckPermissionAsync](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacycheckpermissionasync.md) 和 [`GET (/users/{requestorId}/permission/validate)`](https://docs.xbox.com/zh-CN/reference/live/rest/uri/privacy/uri-privacyusersrequestoridpermissionvalidateget)。

## 何时检查权限

如果您的游戏使用自己的服务，请在会话开始时以及有新玩家加入会话时检查权限。对于会话之外由用户发起的操作，请在显示其他玩家的数据之前以及执行该操作之前检查权限。

如果权限检查失败（例如由于无法访问 XBOX 服务），请阻止所请求的操作并妥善处理失败。将失败的检查视同返回不允许结果的检查。

若要检查其他网络上玩家的权限，请将 `XblAnonymousUserType::CrossNetworkUser` 或 `XblAnonymousUserType::CrossNetworkFriend` 传递给 [XblPrivacyCheckPermissionForAnonymousUserAsync](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacycheckpermissionforanonymoususerasync.md) 或 [XblPrivacyBatchCheckPermissionAsync](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacybatchcheckpermissionasync.md)。如果您的游戏提供 XBOX 网络玩家与其他网络上的玩家之间的通信，请允许玩家在会话期间将其他网络中的任何玩家静音。

在涉及大量玩家的场景（例如全局聊天或超大型会话和活动）中，不建议执行用户对用户的权限检查。在这些场景中，请定期（例如每小时）检查通信特权和每位玩家的阻止列表。

如果您的游戏使用 Game Chat 2，Game Chat 2 会对其承载的语音和文本聊天强制实施特权和隐私限制。有关详细信息，请参阅[使用 Game Chat 2 C++ API](https://docs.xbox.com/zh-CN/services/xbox-services/multiplayer/chat/game-chat2/using-game-chat-2.md)。

有关完整的要求和测试用例，请参阅 [XR-015：管理玩家通信](https://docs.xbox.com/zh-CN/publishing/certification/xr/xr-015.md)和 [XR-045：XBOX 网络和帐户权限](https://docs.xbox.com/zh-CN/publishing/certification/xr/xr-045.md)。

## 静音列表

您的游戏可以使用隐私服务检索用户的静音列表。静音列表指定最多 250 位列表所有者不想通过语音通信听到的用户。

> [!NOTE]
>
> 静音列表控制语音通信，但不影响文本通信。

默认情况下，所有相关的权限检查都包含静音列表。
这意味着，除了检查其他权限之外，您无需为静音列表运行额外的检查。

例如，如果您想知道某个用户是否可以与另一个用户进行语音聊天，隐私服务会将该用户的静音列表作为权限检查的一部分进行检查。您的代码无需再检查静音列表。但是，您可能会发现在某些场景下检索静音列表很有帮助。

> [!NOTE]
>
> 游戏不允许将他人添加到用户的静音列表中。

有关详细信息，请参阅 [XblPrivacyGetMuteListAsync](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacygetmutelistasync.md) 和 [`GET (/users/{ownerId}/people/mute)`](https://docs.xbox.com/zh-CN/reference/live/rest/uri/privacy/uri-privacyusersowneridpeoplemuteget)。

若要在静音列表发生更改时收到通知而不是轮询，请使用 [XblPrivacyAddMuteListChangedHandler](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacyaddmutelistchangedhandler.md) 注册处理程序。有关详细信息，请参阅[静音列表和回避列表的更改通知](#change-notifications-for-the-mute-and-avoid-lists)。

## 回避列表

您的游戏还可以使用隐私服务检索用户的回避列表。

回避列表最多可包含 1,000 名 XBOX 用户，所有者已阻止这些用户，以防止任何形式的通信，例如语音、文本、游戏邀请或俱乐部邀请。

检索回避列表可能很有价值，但检查回避列表也是所有相关权限检查的一部分。

例如，如果您想知道某个用户是否可以向另一个用户发送文本消息，隐私服务会将回避列表作为权限检查的一部分进行查阅。您的代码无需再检查回避列表。

> [!NOTE]
>
> 游戏不允许将他人添加到用户的回避列表中。

有关详细信息，请参阅 [XblPrivacyGetAvoidListAsync](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacygetavoidlistasync.md) 和 [`GET (/users/{ownerId}/people/avoid)`](https://docs.xbox.com/zh-CN/reference/live/rest/uri/privacy/uri-privacyusersxuidpeopleavoidget)。

若要在回避列表发生更改时收到通知，请使用 [XblPrivacyAddBlockListChangedHandler](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacyaddblocklistchangedhandler.md) 注册处理程序。更改通知 API 将回避列表称为阻止列表 (block list)。

## 静音列表和回避列表的更改通知

更改通知处理程序仅报告列表的更改，而不报告完整列表。每个通知都有一个 `XblPrivacyListChangeType::Added` 或 `XblPrivacyListChangeType::Removed` 更改类型，以及一个包含已更改的 XBOX 用户 ID (XUID) 的数组。若要获取完整列表，请调用 `XblPrivacyGetMuteListAsync` 和 `XblPrivacyGetAvoidListAsync`。

使用这些处理程序时，请注意以下事项：

* XUID 数组和其他事件参数仅在回调期间有效。请复制需要保留的任何值。
* 如果无法注册处理程序，添加函数将返回 0。请保存返回的令牌，以便稍后删除处理程序。
* 通知通过实时活动 (RTA) 传递。请使用 [XblRealTimeActivityAddResyncHandler](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/real_time_activity_c/functions/xblrealtimeactivityaddresynchandler.md) 注册处理程序。重新同步通知表示数据可能已丢失，因此收到此类通知时，请重新获取完整列表。
* 在关闭 `XblContextHandle` 之前，请调用 [XblPrivacyRemoveMuteListChangedHandler](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacyremovemutelistchangedhandler.md) 或 [XblPrivacyRemoveBlockListChangedHandler](https://docs.xbox.com/zh-CN/reference/live/xsapi-c/privacy_c/functions/xblprivacyremoveblocklistchangedhandler.md) 删除已注册的每个处理程序。

更改通知不能替代权限检查。请继续按照[何时检查权限](#when-to-check-permissions)中所述检查权限。

## 另请参阅

[XBOX 服务概述](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/live-xbl-overview.md)
[XBOX 服务 API 入门](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis.md)
[XR-015：管理玩家通信](https://docs.xbox.com/zh-CN/publishing/certification/xr/xr-015.md)
[XR-045：XBOX 网络和帐户权限](https://docs.xbox.com/zh-CN/publishing/certification/xr/xr-045.md)


## Related topics

- [隐私和权限](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/identity/privacy/live-privacy-permissions-nav.md)
- [经测试的 XBOX 要求](https://docs.xbox.com/zh-CN/publishing/certification/console-cert-tested-requirements.md)
- [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)
- [隐私](https://docs.xbox.com/zh-CN/services/xbox-services/fundamentals/identity/privacy/index.md)
