Вход в Google — GoogleIdTokenVerifier проверяет токен с задержкой

Я реализовал серверную часть, которая получает токен Google Sign In с устройства Android или iOS и пытается его проверить. Несколько месяцев назад код работал правильно, он не менялся, но в последнее время он стал отклонять все токены как недействительные. Когда я пытаюсь снова повторить проверку с ранее неудачным токеном после ~ 10 секунд времени его выдачи, он начинает работать и возвращает информацию о пользователе. Почему это происходит?

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);
}

person Justinas Jakavonis    schedule 19.07.2016    source источник
comment
Убедитесь, что системное время на вашем внутреннем сервере точное.   -  person Steven    schedule 20.07.2016
comment
Как это может повлиять на проверку токена? Серверная часть получает токен, который только что выпущен и должен быть действительным.   -  person Justinas Jakavonis    schedule 20.07.2016
comment
Сегодня работает нормально, в коде ничего не менял.   -  person Justinas Jakavonis    schedule 21.07.2016