【问题标题】:Flutter Googleapis_auth get new access token from refresh TokenFlutter Googleapis_auth 从刷新令牌中获取新的访问令牌
【发布时间】:2020-06-20 19:44:52
【问题描述】:

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

【问题讨论】:

    标签: flutter google-oauth


    【解决方案1】:

    我找到了答案:

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

    【讨论】:

    • 您好,我也遇到了同样的问题,请详细说明一下,那么 credentials["type"] credentials["data"] credentials["expiry"]credentials["refreshToken"] 是从哪里得到的?提前致谢!
    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 2015-01-08
    • 2019-09-09
    • 2021-08-25
    • 2013-11-05
    • 2015-07-19
    • 2020-09-25
    • 2023-03-22
    相关资源
    最近更新 更多