Google 登录 GoogleIdToken 后端验证突然失败

Posted

技术标签:

【中文标题】Google 登录 GoogleIdToken 后端验证突然失败【英文标题】:Google Sign In GoogleIdToken back-end verification suddenly fails 【发布时间】:2016-10-04 18:50:29 【问题描述】:

我在使用 Google 登录时总是遇到这个问题。我有一个用户连接的 android 应用程序用于向 Google 进行身份验证,然后将 idToken 发送到我的服务器。服务器使用 Google 提供的库 (GoogleIdTokenVerifier) 来验证令牌。

   GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
            .setAudience(audience)
            .setIssuer("https://accounts.google.com")
            .build();

    GoogleIdToken idToken = null;

    try 
        idToken = verifier.verify(idTokenString);
     catch (Exception e) 
        e.printStackTrace();
    

    if (idToken != null) 
        GoogleIdToken.Payload payload = idToken.getPayload();
        String userId = payload.getSubject();
        System.out.println("User ID: " + userId);
        String email = payload.getEmail();
        System.out.println("Emaail:" + email);
        return userId;
     else 
        System.out.println("Invalid ID token.");
        return null;
    

这工作了一段时间,然后突然验证开始总是失败。什么也没有变! 有什么想法吗?

【问题讨论】:

您解决了这个问题吗?我有类似的问题,它以前工作过,代码没有改变,但现在令牌验证在第一次尝试时失败。稍后,大约 10 秒后,相同的令牌变为有效并返回用户信息。 我刚刚切换到使用 REST api .. 它现在适用于我,使用相同的代码。更多信息:***.com/questions/38461832/… 【参考方案1】:

检查您的服务器时间,我在迁移到新服务器时遇到了同样的问题。我通过使用 NTP 设置时区解决了这个问题。

【讨论】:

【参考方案2】:

如果您在本地主机上运行,​​请检查您的计算机时间是否正确,与服务器位于同一时区。

我花了整整一天的时间处理这个错误,从发送给客户端的 idToken 中获取 null。

【讨论】:

以上是关于Google 登录 GoogleIdToken 后端验证突然失败的主要内容,如果未能解决你的问题,请参考以下文章

Firebase IOS Google 登录:成功登录后更改视图

为啥在 google play store 上发布后 google 和 facebook 登录不起作用

Spring Social Google 登录错误后返回

使用 Google 登录通过 Firebase 签名后如何访问课堂 API

应用在 Play 商店发布后,Google plus 登录和 Google 地图无法使用

在 SwiftUI 中使用 google 帐户登录后是不是有任何改变视图的方法?