Ответ 1
Вам не нужно беспокоиться об обновляющих токенах до тех пор, пока вы не сохраните параметр Expiry
. Получив объект "Token", сохраните следующее в своей базе данных:
token.AccessToken
, token.RefreshToken
, token.TokenType
и token.Expiry
при извлечении, снова создайте объект токена, используя указанные выше параметры:
token := new(oauth2.Token)
token.AccessToken = {{ From DataBase }}
token.RefreshToken = {{ From DataBase }}
token.Expiry = {{ From DataBase }}
token.TokenType = {{ From DataBase }}
а затем получите свой http-клиент:
config.Client(ctx, token)
это приведет к обновлению токена. Выдержка (дополнительная информация: Golang oauth2 client):
Клиент возвращает HTTP-клиент, используя предоставленный токен. Токен будет автоматически обновляться по мере необходимости.
Единственным недостатком является то, что обновленный токен доступа не возвращается. Но это работает! Google не имеет ограничений на то, сколько раз используется токен обновления.