本页面重点介绍集成的 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 不同。
- 玩家已通过
XUserAddAsync添加,并持有XUserHandle。 - 该玩家在你的 PlayFab TitleId 下已存在 PlayFab 账户(首次登录时自动预配)。
- XBOX 与 PlayFab 账户已关联,且标题持有用于经过身份验证的 PlayFab REST/SDK 调用的有效凭据(Entity ID 和 PlayFab 令牌)。
将玩家登录到 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 账户。
设置
- 安装 GDK。
- 将 PlayFab.Services.C Gaming Extension Library 添加到你的项目:
- 在 Visual Studio 中打开该项目 → 项目 → 属性。
- 在 配置属性 → Gaming Desktop → 常规下,打开 Gaming Extension Libraries 并添加 PlayFab.Services.C。
- 使用
XUserAddAsync将玩家登录到其 XBOX 账户,并保留返回的XUserHandle。 - 调用
PFAuthenticationLoginWithXUserAsync:- 将
XUserHandle作为user参数传入。 - 设置
createAccount = TRUE,以便在首次登录时 PlayFab 自动预配一个已关联的账户。
- 将
- 保存所生成的 PlayFab 凭据(Entity ID 和 PlayFab 令牌)以供该会话使用,并在后续所有 PlayFab 调用中使用它们。
PlayFab Party XBOX Live Helper Library
如果 PlayFab Party 是你的标题唯一使用的 PlayFab 服务,则可跳过 PlayFab Services SDK,并通过 Party XBOX Live Helper Library 登录,它随 GDK 内的 PlayFab Party SDK 一同发布。 流程- 使用
XUserAddAsync将玩家登录到 XBOX。 - 首次发起聊天时,使用
XUserGetId获取 XUID。 - 通过使用 XUID 调用
PartyXblManager::CreateLocalChatUser,创建PartyXblLocalChatUser。 - 使用该用户对象调用
PartyXblManager::LoginToPlayFab。- 在 GDK(主机和 PC)以及 XDK 上,帮助程序库会在内部获取所需的 XBOX 服务令牌,使用玩家的 XBOX 凭据将其登录到 PlayFab,并在首次登录时自动创建 PlayFab 账户。以这种方式创建的账户没有附加电子邮件或用户名。
- 在非 GDK/非 XDK 标题上(例如没有 GDK 的 PC Win32),你会收到
PartyXblTokenAndSignatureRequestedStateChange。请自行获取 XBOX 服务令牌,并通过PartyXblManager::CompleteGetTokenAndSignatureRequest将其传回。
- 成功后,你会收到一个
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 经济体系进行 Microsoft Store 应用内购买
对于通过 Microsoft Store 销售应用内物品的 GDK 标题,PlayFab 充当经济体系后端,而 Microsoft Store 处理实际交易。PlayFab 使用权益方法将 Microsoft Store 购买对账到玩家的 PlayFab 库存 —— 玩家必须首先登录其 XBOX 账户。流程
- 玩家已登录到 XBOX(
XUserAddAsync)和 PlayFab(PFAuthenticationLoginWithXUserAsync)。 - 玩家通过设备上的 Microsoft Store 购买物品。
- 你的标题通知 PlayFab 该购买。
- PlayFab 使用 XBOX 令牌调用
ConsumeMicrosoftStoreEntitlements,同步玩家的 PlayFab 库存,并授予任何新物品。
合作伙伴中心前提条件
- 已加入 XBOX Creators Program 或托管合作伙伴。
- 已在合作伙伴中心配置发布者身份,其发布者 GUID 与你的 XBOX 业务合作伙伴信息(
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee)相同。 - 使用 XBOX 服务的概念审批。
PlayFab 的 Microsoft Store 附加组件在合作伙伴中心不支持商店托管的消耗品。请仅创建开发者托管的消耗品(或耐用品)。
在合作伙伴中心和 PlayFab 中创建匹配的物品
要使权益同步生效,合作伙伴中心中的 Product ID 与 PlayFab 中的 Item ID 必须完全匹配。- 在合作伙伴中心中 → 附加组件 → 创建新的消耗品(开发者托管)(或耐用品)。输入唯一的 Product ID(例如
MyItem_001)。 - 在 PlayFab Game Manager 中 → Engage → Economy → New item。在 Item ID 中输入相同的字符串(
MyItem_001)。将其标记为消耗品或耐用品,以与合作伙伴中心保持一致,然后保存。
术语参考
目录与商店 —— 全局唯一的 Item ID
PlayFab 允许你为每个标题定义多个 Catalog,并且你可以在每个 Catalog 内将物品分组到 Store 中。要使 Microsoft Store 权益同步生效,每个 Product ID 必须在你的 PlayFab 标题的所有 Catalog 版本中恰好匹配一个 Item ID。 错误 —— 相同 ID 在多个目录中重复使用:
正确 —— 每个 SKU 一个 Item ID,可在多个 Store 中自由复用:
然后,Catalog 内的 Store 可以自由地捆绑这些唯一物品的任意子集:
另请参阅
- XBOX 服务身份 —— XUser、MSA、XSTS 令牌、沙盒范围。
- XBOX 多人游戏 —— 将 PlayFab Party 作为多人游戏传输选项。
- Game Chat 2 —— 叠加在 PlayFab Party 之上的 Game Chat 2。
- 多人活动 —— MPA 与 PlayFab Party 集成。
- PlayFab Services SDK GDK 快速入门
- PlayFab 定价
