Inicio de sesión en Google: GoogleIdTokenVerifier verifica el token con retraso
Implementé un back-end que recibe el token de inicio de sesión de Google desde un dispositivo Android o iOS e intenta verificarlo. El código funcionó correctamente hace unos meses, no ha cambiado, pero recientemente comenzó a rechazar todos los tokens como no válidos. Cuando trato de repetir la verificación nuevamente con el token previamente fallado después de ~ 10s de su tiempo de emisión, comienza a funcionar y devuelve información del usuario. ¿Por que sucede?
try {
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new JacksonFactory()).setIssuer(ISSUER).build();
GoogleIdToken idToken = verifier.verify(token);
if (idToken != null) {
Payload payload = idToken.getPayload();
ExternalUserInfo externalUserInfo = new ExternalUserInfo();
externalUserInfo.setId((String) payload.getSubject());
externalUserInfo.setName((String) payload.get("given_name"));
externalUserInfo.setFamilyName((String) payload.get("family_name"));
externalUserInfo.setEmail(payload.getEmail());
externalUserInfo.setLocale((String) payload.get("locale"));
externalUserInfo.setSystemId(AuthorizationMapper.TYPE_GOOGLE);
return externalUserInfo;
} else {
logger.debug("Invalid Google Sign in token " + token);
}
} catch (Exception e) {
logger.error("Error while getting Google Sign in user info for token " + token, e);
}