我正在使用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
来获取新的访问令牌。
答案 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
);