Login do Google - GoogleIdTokenVerifier verifica o token com atraso
Eu implementei o back-end que recebe o token de login do Google do dispositivo Android ou iOS e tenta verificá-lo. O código funcionou corretamente há alguns meses, não mudou, mas recentemente começou a rejeitar todos os tokens como inválidos. Quando tento repetir a verificação novamente com um token com falha anterior após aproximadamente 10 segundos do seu tempo de problema, ele começa a funcionar e retorna as informações do usuário. Por que isso acontece?
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);
}