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

# 访客用户概述

> 在 XBOX 游戏中支持 Sponsored Guest 账户，让玩家无需创建完整的 XBOX 账户即可加入本地或联机多人游戏会话。

访客用户,也称为 ***Sponsored Guests***(赞助访客)或 ***Guest Accounts***(访客账户),允许玩家在无需创建完整的 XBOX 账户的情况下与许多 XBOX 服务交互。当游戏允许访客账户参与时,它使用 Sponsored Guests 来实现这一点。

<Note>还存在另一种访客账户,称为 ***Pure Guest***(纯访客)。这是在没有已登录账户的情况下存在的账户类型。它无法进行已验证身份的 XBOX 服务调用,也无法游玩任何需要 XBOX 用户已登录的游戏。</Note>

访客用户是单会话账户,由已经登录到该设备的另一个 XBOX 用户进行赞助。它允许玩家在无需创建完整 XBOX 账户的情况下与许多 XBOX 服务交互,并会持续到满足以下条件之一为止:

* 访客账户注销
* 赞助用户注销
* 设备关机

从终端用户的角度来看,访客账户降低了进入门槛,使得玩家可以更容易地从与其赞助者相同的主机加入本地或联网多人游戏。在单次游戏会话中,该访客享有与赞助账户几乎相同的许多权益,包括语音通信。

## 在你的游戏中支持访客账户

在你的游戏中支持访客用户并非必需,但这是一种在不对用户处理进行大幅更改的情况下,允许没有 XBOX 账户的玩家在赞助设备上体验你内容的好方式。与完整的 XBOX 用户类似,访客用户可以通过使用 `XUserAddOptions::AllowGuests` 选项调用 [XUserAddAsync](/reference/system/xuser/functions/xuseraddasync) 来登录。登录后,访客会被分配一个 `XUserHandle`,它可用于所有以 `XUserHandle` 作为参数的 API。

<Note>XBOX 用户与访客用户之间的一个关键区别是能否确定性地识别用户。当访客登录时,他们无法控制选择哪个账户来赞助他们。如果一个访客注销后又有另一个访客登录,你无法确定他们是否是之前的同一位用户。如果你考虑为某个特定用户存储玩家偏好设置或缓存数据,请留意这一点。</Note>

## 与 XBOX 服务交互时 XBOX 用户与访客用户的区别

之后可以针对该用户调用 [XblContextCreateHandle](/reference/live/xsapi-c/xbox_live_context_c/functions/xblcontextcreatehandle) 以与 XBOX 服务通信。你可以通过对用户句柄调用 [XUserGetIsGuest](/reference/system/xuser/functions/xusergetisguest) 来检查用户是否是访客。

XBOX 用户与访客用户的差异取决于所使用的 API。对于完全支持访客账户的服务,例如查询其他玩家的公开个人资料信息,这两种类型的用户使用赞助账户的权限的行为完全相同。

不支持访客用户的 XBOX 服务通常是那些存储或管理与特定用户相关联的长期数据的服务(例如统计信息、成就、社交关系等)。当使用访客用户调用这些服务时,会返回错误(通常是 `HTTP_E_STATUS_BAD_REQUEST`)。

<Note>避免在不支持访客账户的 API 中使用访客账户是开发者的责任。下面列出了这些服务及其支持级别。</Note>

### XBOX 用户账户订阅状态和家长控制

由于访客账户继承赞助账户的能力,该账户订阅类型(Gold 与 Silver)带来的任何限制以及为该账户启用的任何家长控制也会被继承。例如,如果赞助账户被 XBOX Community Policy & Enforcement 撤销了某些权限,则访客用户也会失去这些权限。

## XBOX 服务对访客账户的支持

### 访客用户的 XBOX 服务 API 支持

* Cloud Storage
  * 不支持

* General
  * Real-Time Activity (RTA) 支持取决于所订阅的服务

* Identity
  * Authentication
    * 从赞助账户继承
  * Privacy
    * Permission Checking / Mute / Avoid lists
      * 从赞助账户继承
  * Privileges
    * Parental Controls
      * 从赞助账户继承
    * Privacy Settings
      * 从赞助账户继承
    * 赞助访客账户被移除的权限
      * XPRIVILEGE\_BROADCAST
      * XPRIVILEGE\_MANAGE\_PROFILE\_PRIVACY\_SETTING
      * XPRIVILEGE\_GAME\_DVR
      * XPRIVILEGE\_SOCIAL\_NETWORK\_SHARING
      * XPRIVILEGE\_ADD\_FRIEND
  * User Profile - 部分支持
    * 访客可查看公开的 XBOX 个人资料数据

* Multiplayer
  * 从赞助账户继承

* Player-Data
  * Achievements - 不支持
  * Stats - 不支持

* 已认证的自定义 Web 服务及服务到服务的调用
  * 访客账户可以对自定义 Web 服务进行已认证的调用
  * 访客账户可以在服务到服务调用中使用

* Social
  * Localized Strings - 不支持
  * People-System - 不支持
  * Presence - 不支持
  * Reputation - 不支持
  * Social Manager - 不支持

### PlayFab

* PlayFab Party Chat
  * 访客继承所赞助用户的权限,如果被赞助的账户拥有多人游戏和通信权限,则访客可以参与

## 常见问题

### 是否可以同时登录多个访客账户?

多个访客账户可以拥有相同的赞助者,并且可以同时登录。

### 访客账户能访问设备权益吗?

设备权益向访客账户的传播方式与向 XBOX 用户的传播方式相同。

访客账户对已安装内容的访问权限也与赞助账户相同。

### 访客账户与不支持访客账户的平台(例如 PC、移动端)如何交互?

访客账户作为具有与赞助账户相同权限的普通账户出现,不需要额外的代码。

### 访客账户在认证过程中如何被测试?

访客账户功能在认证过程中不会被特别测试。此外,游戏是否选择支持访客账户由开发者决定。

## 另请参见

[用户身份与 XUser](/build/core-features/common/user/player-identity-xuser)

[XBOX 服务用户权限概述](/services/xbox-services/fundamentals/identity/privileges/live-user-privileges-overview)

[XBOX 服务用户权限的客户端使用](/services/xbox-services/fundamentals/identity/privileges/concepts/live-user-privileges-client)


## Related topics

- [用户](/zh-CN/build/core-features/common/user/user-toc.md)
- [XBOX Manager：管理测试账户](/zh-CN/tools/tools-console/xbom/manager-tool-profiles.md)
- [GDK 中的用户身份与 XUser API](/zh-CN/build/core-features/common/user/index.md)
- [XBOX 服务用户特权的客户端使用](/zh-CN/services/xbox-services/fundamentals/identity/privileges/concepts/live-user-privileges-client.md)
- [用户身份与 XUser](/zh-CN/build/core-features/common/user/player-identity-xuser.md)
