在 Unity 中使用 Google Play Games 登录设置 PlayFab 身份验证
先决条件
- 使用 Unity 游戏引擎构建的项目。
- Google 开发者账户。
- 有权访问 PlayFab 中的游戏 title 的 PlayFab 开发者账户。
- PlayFab Unity Editor Extensions & Unity SDK。
- Google Play Games SDK。
- 熟悉登录基础和最佳实践。
入门
首先,我们从在 Google Play 中设置一些基本内容开始。有一些关于如何完成其中一些任务的很好的指南,因此我们不会重新发明轮子。- 创建应用程序 - 如果你还没有创建应用程序,则需要在 Google Play Developer Console 中执行此操作。
- 构建你的游戏 AAB,并将其上传用于内部测试。你可以按照此指南将你的应用发布到 Internal testing 轨道。在签名过程中,请考虑你必须为此目的使用自己的 keystore 用于你的应用捆绑包。有关如何创建 keystore,请参阅此文档。
- 按照此页面上的说明设置 Google Play Games services:设置 Google Play Games Services。
- 下载 Google Play Games SDK 并安装它。
- 安装 PlayFab Unity SDK(如果你不知道如何执行此任务,请按照 Unity3D 快速入门指南操作)。
配置 Google Play Games
你可以从与 Google Play Games SDK 一起安装的工具集配置 Google Play Games。你可以通过以下方式访问这些工具:- 转到 Window 选项卡。
- 选择 Google Play Games。
- 转到 Setup。
- 然后访问 Android Setup。
- Android 配置窗口出现,我们需要在此屏幕上输入 Resources Definition 和 Web App Client ID。
获取 Resources Definition
- 按照这些步骤获取你的 Android Resources 定义。
获取 Web App Client ID
为了让 Google Sign-In 与 PlayFab 配合工作,你需要使用一个 Web Client ID,你可以通过为“Web application”类型创建 OAuth Client ID 凭据来获取。 在创建 OAuth Client ID 之前,你需要知道你的 PlayFab API Endpoint,你可以按照以下步骤找到:- 登录 Game Manager。
- 选择你的 title。
- 通过点击 title 名称旁边的齿轮图标并选择 Title Settings 来转到你的 title 设置。
- 选择 API Features 选项卡。
- 复制到 API endpoint 字段。
- 创建 Client ID 时,你需要将 API endpoint 添加为你的 Client ID 的 Authorized JavaScript origin。
- 此外,请确保将你自己的应用程序重定向 URI 添加为 Authorized Redirect URI。如果你不执行此步骤,将收到 mismatch redirect_uri 错误。
PlayFab Google 登录设置
PlayFab 有自己的过程来设置 Google 登录。你可以在你的 PlayFab 开发者账户中执行此设置。如果你没有,你可以注册免费的开发者账户。 要在 PlayFab 中设置 Google:- 导航到你仪表板中的 Add-ons 部分。
- 转到 Google Add-On。
- 从那里,选择 Install Google 按钮。
- Google App Package ID - 此字段是你 Android 包的名称。例如,我们的示例使用
com.playfab.gpgexample。 - Google App License Key - 虽然此字段是必需的,但它与 Google Sign-In 无关。此字段用于使用我们的 Receipt Validation API 设置收据验证。
你可以从 Google Developer Console 获取此 License Key,导航到你的应用,在 Monetize 部分下。选择标题为 Monetization Setup 的部分。在此处,向下滚动直到看到 Licensing 文本框,将 Base64 编码的 RSA 公钥复制并粘贴到此字段中。
- Google OAuth Client ID - 你在 Unity 中的 Google Play Games SDK 设置中使用的 Web Client ID。
- Google OAuth Client Secret - 你在创建 OAuth Client ID 时获得的密钥。
- Service Account Key - 此字段期望一个服务账户密钥 JSON 字符串,你需要按照这些步骤创建一个服务账户密钥。然后,按照此处的步骤为该服务账户创建凭据。获得凭据 JSON 文件后,将整个 JSON 内容粘贴到此字段中。
将 Google 登录添加到你的 Unity 游戏中
让 Google 登录工作的代码相当简单。有初始化代码,你将其放在你的 Start(或你正在初始化或启动应用的任何位置)中。 此代码可以在不同位置,具体取决于你游戏或应用的架构和框架。在任何情况下,以下代码都会初始化 Google Play Games。请确保你不要忘记 using 语句,以便你可以使用 Google Play Games SDK。
- 首先,我们使用
PlayGamesPlatform.Instance.Authenticate登录 - 此函数接收一个回调函数作为参数,用于处理结果,并根据接收到的 SignInStatus 告知我们用户是否能够成功登录。 - 如果你没有将测试账户添加到你的应用,在测试时回调 SignInStatus 结果总是 Canceled。如果发生此问题,请按照此指南上的步骤将测试者添加到你的 Google 应用程序。
对
PlayGamesPlatform.Instance.Authenticate 的调用将触发 Google Play Games 登录对话框弹出。-
接下来,如果我们成功登录,我们对
PlayGamesPlatform.Instance.RequestServerSideAccess进行调用,它接收另一个回调并返回 ServerAuthCode 字符串。 -
然后,我们进行
PlayFabClientAPI.LoginWithGooglePlayGamesServices调用,并将我们刚从 Google 获得的AuthCode作为ServerAuthCode参数传入。 -
最后,根据
LoginWithGooglePlayGamesServices调用的结果,会调用OnLoginWithGooglePlayGamesServicesSuccess或OnLoginWithGooglePlayGamesServicesFailure,这些回调是处理你到 PlayFab 的登录操作结果的回调。此时,你应该在你的仪表板中看到一个成功的登录!
