Flutter Googleapis_auth получает новый токен доступа из refre sh Token - PullRequest
0 голосов
/ 20 июня 2020

Я использую Googleapis_auth для доступа к некоторым Google API, я храню учетные данные в локальном хранилище, чтобы я мог получить доступ к этому API позже, но он истекает через один час как чтение.

Я хочу получить новый токен доступа после истечения срока действия первого с использованием сохраненных учетных данных refreshToken, но я не знаю, как это сделать.

Это код, который я использую для получения учетных данных пользователя:

var authClient = await clientViaUserConsent(
    ClientId(_clientId, _clientSecret), 
    _scopes,
    (url) { launch(url);}
);
//Save Credentials
await storage.saveCredentials(authClient.credentials.accessToken,
    authClient.credentials.refreshToken);
return authClient;

И вот как я использую сохраненные учетные данные:

return authenticatedClient(
        http.Client(),
        AccessCredentials(
            AccessToken(credentials["type"], credentials["data"],
                DateTime.tryParse(credentials["expiry"])),
            credentials["refreshToken"],
            _scopes)
);

Но, как я сказал выше, когда срок действия учетных данных истекает, я понятия не имею, как я использую refreshToken, чтобы получить новый токен доступа.

1 Ответ

0 голосов
/ 22 июня 2020

Я нашел ответ:

AccessCredentials newCredentials = await refreshCredentials(
          ClientId(_clientId, _clientSecret),
            AccessCredentials(
                AccessToken(credentials["type"], credentials["data"],
                DateTime.tryParse(credentials["expiry"])),
                credentials["refreshToken"],
                _scopes
            ),
            http.Client()
    );


    return authenticatedClient(
          http.Client(),
          newCredentials
    );
...