Unity 的 Google Signin(Windows 独立版本)- 与 Playfab 一起使用时的 GoogleToken 无效

问题描述 投票:0回答:2

希望有人能在这里为我指明正确的方向,我正在尝试使用从 Unity 中的异步调用检索到的 google 身份验证代码登录 Playfab,流程如下:

  1. 单击 Unity 中的“登录 Google”按钮。

  2. Unity 开始监听响应并打开 google 登录浏览器会话。

  3. 用户点击电子邮件/登录他们想要的电子邮件。

  4. 此响应将连同授权码一起返回给 Unity。

  5. 然后我尝试将返回的谷歌身份验证代码与 playfabs LoginWithGoogleAccount 方法一起使用“:

    PlayFabClientAPI.LoginWithGoogleAccount(new LoginWithGoogleAccountRequest()
    {
        TitleId = PlayFabSettings.TitleId,
        ServerAuthCode = returnedWindowsGoogleAuthCode,
    
        CreateAccount = true,
    }, OnPlayfabGooglePlayAuthComplete, OnPlayfabGooglePlayAuthFailed);
    
  6. 此操作会失败,并从 playfab 返回“invalidGoogleToken”响应。

从我在谷歌上看到的内容来看,当我调用 LoginWithGoogleAccount 时,该令牌可能处于“已使用”状态,并且我可能需要刷新令牌?但我对 Google API 不太熟悉,所以我可能完全偏离目标?但如果是这种情况我应该在这里做什么?如何重新请求有效令牌而不返回浏览器再次执行相同的操作?

为了让您大致了解我正在查看的代码,但我稍微修改了一下以使其在 Unity 中工作,我遵循 Google 示例 OAuthDesktopApp 代码: OAuthDesktopApp 示例代码

我正在调用方法“button_Click”,该方法运行并发出请求,然后 Unity 开始在第 72 行侦听 google 响应,然后将身份验证代码输出到第 129 行的日志中。

第 129 行的身份验证代码输出是我随后传递回 LoginWithGoogleAccount 的内容,这会导致失败的“invalidGoogleToken”,这也会运行对用户信息的请求,该请求会正确返回用户的姓名/电子邮件您使用 etc 登录。

只是添加到我之前的评论中,如果我删除对 PerformCodeExchange 第 132 行的调用(我在某处读到,此时我正在将身份验证代码交换为令牌,因此身份验证代码将不再起作用?我猜在这里),然后如果我使用授权代码调用 PlayFabClientAPI.LoginWithGoogleAccount,我会看到:

PlayFabError 错误:

错误.GetHashCode():2051826304

错误。错误:无效的GoogleToken

error.ErrorMessage:invalid_grant 详细信息:缺少代码验证程序。

错误.ErrorDetails: null

希望这可以帮助有人指导我。

unity-game-engine google-api google-oauth google-signin playfab
2个回答
1
投票

首先感谢那些回复此问题的人,所以我在 Playfab mod 的评论后设法解决了这个问题,谷歌似乎没有官方方法可以使用独立的 Unity 构建登录,也没有官方方法可以登录Playfab 使用相同的构建方法。

我使用的解决方案使用来自 OAuth 2.0 for Mobile & Desktop Apps 的 Google 示例之一的修改版 Unity 版本。 这将允许您在 Unity 中获取 oauth 代码,然后您可以将此 oauth 代码传递给 Playfab 进行登录,但 Playfab 已经弃用了执行此操作的方法(如果它是唯一的解决方案,这是愚蠢的),因此您需要修改 Playfabs SDK包含 accesstoken 然后您可以使用它来最终登录。


0
投票

我可以得到一些帮助吗,我迫切需要帮助 xD。如果你介意的话,我所有的社交都是@tomaskolakovic,我也在关注答案

© www.soinside.com 2019 - 2024. All rights reserved.