Flutter Googleapis_auth从刷新令牌获取新的访问令牌

时间:2020-06-20 19:44:52

标签: flutter google-oauth

我正在使用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 :(得分:0)

我找到了答案:

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