Google Unity 登录(Windows 独立构建)- 与 Playfab 一起使用时无效Google令牌

Google Signin for Unity (Windows standalone build) - invalidGoogleToken when used with Playfab

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

  1. 在 Unity 中单击我的登录 google 按钮。

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

  3. 用户点击 email/signs 进入他们想要的电子邮件。

  4. 此响应return使用授权码发送到 Unity。

  5. 然后我尝试将 returned google 授权码与 playfabs LoginWithGoogleAccount 方法一起使用":

    PlayFabClientAPI.LoginWithGoogleAccount(new LoginWithGoogleAccountRequest()
    {
        TitleId = PlayFabSettings.TitleId,
        ServerAuthCode = returnedWindowsGoogleAuthCode,
    
        CreateAccount = true,
    }, OnPlayfabGooglePlayAuthComplete, OnPlayfabGooglePlayAuthFailed);
    
  6. 然后失败,playfab 发出 returned 响应“无效GoogleToken”。

从我在 google 上看到的内容来看,当我调用 LoginWithGoogleAccount 和我可能需要一个刷新的令牌?但我对 Google API 不是很熟悉,所以我可以完全偏离目标吗?但是如果是这样的话,我该怎么办呢?如何在不返回浏览器再次执行相同操作的情况下重新请求有效令牌?

为了让您大致了解我正在查看的确切代码,但我稍作改动以使其在 Unity 中工作,我遵循 Google 示例 OAuthDesktopApp 代码: OAuthDesktopApp Sample Code

我正在调用方法“button_Click”,这个 运行s 并发出请求,然后 Unity 开始侦听第 72 行的 google 响应,授权代码是然后在第 129 行输出到日志。

第 129 行的授权代码输出是我随后传递回 LoginWithGoogleAccount 的内容,然后导致失败的“invalidGoogleToken”,这也是 运行 用户信息请求正确 return 您登录的用户 name/email 等

只是为了补充我之前的评论,如果我删除对 performCodeExchange 行 132 的调用(我在某处读到,那时我正在用令牌交换授权代码,因此授权代码将不再有效?我我在这里猜测),然后如果我用我看到的授权代码调用 PlayFabClientAPI.LoginWithGoogleAccount:

PlayFabError 错误:

error.GetHashCode(): 2051826304

error.Error:无效Google令牌

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

error.Error详细信息:无

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

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

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