将通用 Windows 平台与 PlayFab 集成

本教程介绍 PlayFab 与通用 Windows 平台 (UWP) 集成的三个要点。

注意

我们创建了一个包含示例代码的 [GitHub repository](https://github.com/PlayFab/UWPExample),以说明如何将通用 Windows 平台与 PlayFab 集成。

将通用 Windows 平台 (UWP) 与 PlayFab 集成非常简单。 您只需要注意以下三点:

  1. 将 Windows Hello 帐户与 PlayFab 帐户关联。
  2. 让玩家通过 Windows Hello 登录。
  3. 验证从 Microsoft Store 进行的购买。

下面,我们按顺序讲述这三个主题。

将 Windows Hello 帐户与 PlayFab 帐户关联

可以通过以下两种方式将 Windows Hello 帐户与 PlayFab 帐户关联:

  1. 可以使用 Windows Hello 凭据创建新的 PlayFab 帐户。
  2. 可以将 Windows Hello 凭据与现有 PlayFab 帐户关联。

使用哪种身份验证取决于是否Windows Hello主要身份验证。

使用 Windows 凭据创建新帐户

在开始此过程之前,您需要询问用户其在 Windows 中的用户名。

然后,可以按照以下步骤操作:

  1. 调用 KeyCredentialManager.RequestCreateAsync,为此用户生成新的公钥。
  2. 调用 CryptographicBuffer.EncodeToBase64String,将来自上一步的 IBuffer 转换为字符串。
  3. 使用以下必需参数调用 PlayFabClientAPI.RegisterWithWindowsHello
    • Windows 用户名。
    • 上一步生成的 Base 64 编码的公钥。
  4. 假设注册成功,玩家现将登录。 您将获得一个会话令牌,您可以将此令牌与所有其他 PlayFab API 配合使用来对玩家进行身份验证。
  5. 此外,您现在也可以使用 HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha256) 创建哈希提供程序,并通过调用 hashProvider.HashData(publicKey) 对公钥进行哈希处理。
  6. 将经过哈希处理的公钥转换为 Base 64 编码的字符串 (CryptographicBuffer.EncodeToBase64String(publicKeyHash)),然后将此字符串和用户名存储在应用程序设置中。 (ApplicationData.Current.LocalSettings.Values["publicKeyHint"])。 此公钥提示用于重新登录。
  7. 用户名也应存储在用户的本地设置中,以实现更便捷的登录。

将 Windows 凭据与现有 PlayFab 帐户关联

将 Windows 凭据与现有 PlayFab 帐户关联的过程非常相似。 不同之处在于:

  1. 首先,您必须已登录 PlayFab 帐户。 通常,这是使用不安全的设备 ID 匿名完成的。
  2. 然后,按照上一节中的步骤操作,但使用 LinkWindowsHello 代替 RegisterWithWindowsHello
  3. 现在,用户以后可以使用 Windows 凭据登录,并访问或恢复其 PlayFab 帐户。

让玩家通过 Windows Hello 登录

将 Windows Hello 凭据与 PlayFab 帐户关联后,即可使用这些凭据登录。 您将需要公钥提示和 Windows 用户名。

请遵循以下步骤:

  1. 调用 PlayFabClientAPI.GetWindowsHelloChallengeAsync 创建签名质询。
  2. 调用 CryptographicBuffer.DecodeFromBase64StringKeyCredentialManager 创建具有用户签名的 IBuffer。
  3. 调用 var retrieveResult = awaitKeyCredentialManager.OpenAsync(userId) 创建密钥签名服务。
  4. 获取此用户的凭据:var userCredential = retrieveResult.Credential
  5. 调用 await userCredential.RequestSignAsync(challengeBuffer) 让 Windows 请求用户为服务器对此用户的质询进行签名。
  6. 最后,调用 PlayFabClientAPI.LoginWithWindowsHello 完成此过程并让玩家登录。
  7. 假设登录成功,玩家现已登录。 您将获得一个会话令牌,您可以将此令牌与所有其他 PlayFab API 配合使用来对玩家进行身份验证。

通过 Microsoft Store 进行购买

通过 Microsoft Store 进行购买与通过 iOS 或 Android 进行购买的过程类似。 包括以下两个阶段:

  1. 首先设置 Microsoft Store。
  2. 然后进行购买。

设置 Microsoft Store

Microsoft 已发布多个讲述此过程的文档。 例如:

在 Microsoft Store 中设置应用内购买

您还必须确保在 PlayFab 目录中设置具有相同产品 ID 的匹配物品。

进行购买

在 Microsoft Store 中设置物品后,即可在应用程序中启用应用内购买。

  1. 在应用程序中进行购买,并务必请求收据。
  2. 您将收到一张收据。
  3. 调用 PlayFabClientAPI.ValidateWindowsStoreReceipt 来验证收据。 这会自动将玩家刚刚购买的物品放入其在 PlayFab 中的物品栏内。

其他问题

如果您还有其他问题,请在我们的论坛上提出。

我们也很乐意收到有关将您的游戏与通用 Windows 平台集成的任何反馈!