Skip to main content
PlayFab 是 Microsoft 为实时运营游戏提供的后端即服务 —— 涵盖经济体系、目录、排行榜、云脚本、分析、匹配以及 PlayFab Party 语音/数据网络。它可以整齐地叠加在 XBOX 服务之上。XBOX 服务负责面向玩家的身份(gamertag、好友、成就、状态、MPSD 会话),而 PlayFab 负责后端实时运营数据(库存、货币、自定义用户数据、遥测)。 任何使用 PlayFab Party、通过 PlayFab 经济体系进行 Microsoft Store 应用内购买、PlayFab 排行榜或任何其他 PlayFab 服务的 GDK 标题,都必须将玩家登录到这两个堆栈,并保持两个身份关联。
本页面重点介绍集成的 XBOX 侧内容 —— 即如何预配与已登录 XUser 关联的 PlayFab 账户,以及 Microsoft Store 权益流程如何接入 PlayFab 经济体系。有关完整的 PlayFab 功能范围(游戏管理器、目录、云脚本、匹配、Party),请参阅 PlayFab 文档

XBOX 与 PlayFab 用户账户

XBOX 服务账户与 PlayFab 账户是两个独立的身份:
  • XBOX 服务账户 —— 面向玩家。归玩家的 Microsoft Account (MSA) 所有。承载 gamertag、XUID、好友、成就、状态。
  • PlayFab 账户 —— 后端使用。由你的 PlayFab TitleId(在 PlayFab Game Manager 中创建标题时分配的 4–6 位十六进制字符串)内的 Entity ID 标识。与你的 XBOX title ID 不同。
若要在 GDK 标题中使用任何 PlayFab 功能(Party 语音聊天、经济体系、排行榜),每个已登录的 XUser 都必须在你的 PlayFab 标题上下文中预配一个已关联的 PlayFab 账户。登录流程结束时:
  • 玩家已通过 XUserAddAsync 添加,并持有 XUserHandle
  • 该玩家在你的 PlayFab TitleId 下已存在 PlayFab 账户(首次登录时自动预配)。
  • XBOX 与 PlayFab 账户已关联,且标题持有用于经过身份验证的 PlayFab REST/SDK 调用的有效凭据(Entity ID 和 PlayFab 令牌)。
你的 PlayFab TitleId 与你的 XBOX title ID 不同。请在 PlayFab Game Manager 中为每款游戏(或每个分片)预配一个 PlayFab 标题,并将该 TitleId 硬编码到你的构建配置中。

将玩家登录到 PlayFab

有两条受支持的登录路径。请根据你所使用的 PlayFab 服务选择其一:

PlayFab Services SDK

推荐用于所有标题。 作为 Gaming Extension Library(PlayFab.Services.C)随 GDK 一起发布。适用于经济体系、排行榜、云脚本、匹配以及任何不仅仅使用 Party 的标题。

PlayFab Party Xbox Live Helper Library

仅当 PlayFab Party 是你所使用的唯一 PlayFab 服务且 XBOX 服务是你的唯一身份验证提供程序时使用。随 GDK 内的 PlayFab Party SDK 一同发布。

PlayFab Services SDK(推荐)

PlayFab Services SDK 随 GDK 一起发布,并公开 PFAuthenticationLoginWithXUserAsync,它接受一个 XUserHandle,只需一次调用即可将玩家登录到 PlayFab。将 createAccount = TRUE 设置为在首次运行时自动预配已关联的 PlayFab 账户。 设置
  1. 安装 GDK
  2. PlayFab.Services.C Gaming Extension Library 添加到你的项目:
    • 在 Visual Studio 中打开该项目 → 项目属性
    • 配置属性Gaming Desktop常规下,打开 Gaming Extension Libraries 并添加 PlayFab.Services.C
推荐的登录流程
  1. 使用 XUserAddAsync 将玩家登录到其 XBOX 账户,并保留返回的 XUserHandle
  2. 调用 PFAuthenticationLoginWithXUserAsync
    • XUserHandle 作为 user 参数传入。
    • 设置 createAccount = TRUE,以便在首次登录时 PlayFab 自动预配一个已关联的账户。
  3. 保存所生成的 PlayFab 凭据(Entity ID 和 PlayFab 令牌)以供该会话使用,并在后续所有 PlayFab 调用中使用它们。
有关完整演练,请参阅 PlayFab Services SDK GDK 快速入门

PlayFab Party XBOX Live Helper Library

如果 PlayFab Party 是你的标题唯一使用的 PlayFab 服务,则可跳过 PlayFab Services SDK,并通过 Party XBOX Live Helper Library 登录,它随 GDK 内的 PlayFab Party SDK 一同发布。 流程
  1. 使用 XUserAddAsync 将玩家登录到 XBOX。
  2. 首次发起聊天时,使用 XUserGetId 获取 XUID。
  3. 通过使用 XUID 调用 PartyXblManager::CreateLocalChatUser,创建 PartyXblLocalChatUser
  4. 使用该用户对象调用 PartyXblManager::LoginToPlayFab
    • 在 GDK(主机和 PC)以及 XDK 上,帮助程序库会在内部获取所需的 XBOX 服务令牌,使用玩家的 XBOX 凭据将其登录到 PlayFab,并在首次登录时自动创建 PlayFab 账户。以这种方式创建的账户没有附加电子邮件或用户名。
    • 在非 GDK/非 XDK 标题上(例如没有 GDK 的 PC Win32),你会收到 PartyXblTokenAndSignatureRequestedStateChange。请自行获取 XBOX 服务令牌,并通过 PartyXblManager::CompleteGetTokenAndSignatureRequest 将其传回。
  5. 成功后,你会收到一个 PartyXblLoginToPlayFabCompletedStateChange,其中包含 PlayFab Entity ID 和令牌。
对于远程用户,请使用 PartyXblManager::CreateRemoteChatUser —— 远程用户流程无需进行身份验证或令牌交换。

XUser 是身份桥梁

下游的一切 —— PlayFab 登录、MPSD 会话写入令牌、S2S 调用、权益查询 —— 都始于 XUserAddAsync 返回的 XUserHandle。对 PlayFab 集成而言,有两个 API 十分重要: 有关更广泛的登录模型(MSA、XSTS 令牌、沙盒范围),请参阅 XBOX 服务身份

跨平台标题

PlayFab 支持多种平台身份验证提供程序。当你在 iOS、Android、Steam 或 PlayStation 上发布同一标题时,不要尝试将每个玩家都通过 XUser 路由 —— 请使用该平台原生的 PlayFab 身份验证提供程序:
  • iOS —— Apple ID (LoginWithApple)。
  • Android —— Google Play Games (LoginWithGoogleAccount)。
  • Steam —— LoginWithSteam
  • XBOX / GDK PC —— PFAuthenticationLoginWithXUserAsync(本页)。
每个平台的登录都会预配自己的 PlayFab 账户,并将其关联到同一个 PlayFab 标题。使用同一 PlayFab 账户跨平台的玩家将在 PlayFab 中合并其关联的身份。 有关完整矩阵,请参阅 特定于平台的 PlayFab 身份验证

通过 PlayFab 经济体系进行 Microsoft Store 应用内购买

对于通过 Microsoft Store 销售应用内物品的 GDK 标题,PlayFab 充当经济体系后端,而 Microsoft Store 处理实际交易。PlayFab 使用权益方法将 Microsoft Store 购买对账到玩家的 PlayFab 库存 —— 玩家必须首先登录其 XBOX 账户。

流程

  1. 玩家已登录到 XBOX(XUserAddAsync)和 PlayFab(PFAuthenticationLoginWithXUserAsync)。
  2. 玩家通过设备上的 Microsoft Store 购买物品。
  3. 你的标题通知 PlayFab 该购买。
  4. PlayFab 使用 XBOX 令牌调用 ConsumeMicrosoftStoreEntitlements,同步玩家的 PlayFab 库存,并授予任何新物品。
对于 GDK 标题,请使用 Microsoft Store PlayFab 附加组件和 ConsumeMicrosoftStoreEntitlements不要使用旧版 XBOX 附加组件 / ConsumeXboxEntitlements(该路径仅适用于 XDK 标题)。Universal Windows Platform 附加组件已弃用。

合作伙伴中心前提条件

  • 已加入 XBOX Creators Program 或托管合作伙伴。
  • 已在合作伙伴中心配置发布者身份,其发布者 GUID 与你的 XBOX 业务合作伙伴信息(aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee)相同。
  • 使用 XBOX 服务的概念审批。
在合作伙伴中心,依次选择 游戏设置 → XBOX 服务,选择 使用完整的 XBOX 服务功能集(需要概念审批)使用 XBOX Creators Program,然后在你的标题下创建附加组件。
PlayFab 的 Microsoft Store 附加组件在合作伙伴中心不支持商店托管的消耗品。请仅创建开发者托管的消耗品(或耐用品)。

在合作伙伴中心和 PlayFab 中创建匹配的物品

要使权益同步生效,合作伙伴中心中的 Product ID 与 PlayFab 中的 Item ID 必须完全匹配。
  1. 在合作伙伴中心中 → 附加组件创建新的消耗品(开发者托管)(或耐用品)。输入唯一的 Product ID(例如 MyItem_001)。
  2. PlayFab Game Manager 中 → EngageEconomyNew item。在 Item ID 中输入相同的字符串(MyItem_001)。将其标记为消耗品或耐用品,以与合作伙伴中心保持一致,然后保存。

术语参考

目录与商店 —— 全局唯一的 Item ID

PlayFab 允许你为每个标题定义多个 Catalog,并且你可以在每个 Catalog 内将物品分组到 Store 中。要使 Microsoft Store 权益同步生效,每个 Product ID 必须在你的 PlayFab 标题的所有 Catalog 版本中恰好匹配一个 Item ID
如果同一 Item ID 出现在多个 Catalog 中,权益消耗将会失败。请确保物品 ID 在给定 PlayFab 标题的每个 Catalog 中都全局唯一。
错误 —— 相同 ID 在多个目录中重复使用: 正确 —— 每个 SKU 一个 Item ID,可在多个 Store 中自由复用: 然后,Catalog 内的 Store 可以自由地捆绑这些唯一物品的任意子集:

另请参阅

最后修改于 2026年8月25日