gpt4 book ai didi

android - GoogleSignIn - 如何刷新访问 token ?在文档中找不到任何内容

转载 作者:行者123 更新时间:2023-12-04 03:36:28 25 4
gpt4 key购买 nike

我已成功将 GoogleSignIn 集成到我的 Android 应用程序中,但 1 小时后,访问 token 过期。如何刷新 token ?

我已经检查了 GoogleSignIn 的整个文档,但没有关于刷新 accessToken

的内容

https://developers.google.com/identity/sign-in/android/start-integrating

我也尝试过搜索类似“.refreshAccessToken()”的方法

enter image description here

如何刷新 token ?为什么文档中没有关于它的内容?

最佳答案

如果您可以控制为您的 Android 项目提供支持的服务器,则以下方法可行。我将使用 Java 来说明,因为您的屏幕截图是用 Java 编写的。

从所附图片中,我可以看到您可以在对用户进行身份验证后检索 GoogleSignInAccount。您可以通过执行以下操作从中获取服务器授权码:

String authCode = account.getServerAuthCode();

然后您可以将此授权码发送到您的服务器并使用 GoogleAuthorizationCodeTokenRequest 将其交换为刷新 token 类(class)。这是下图:

String CLIENT_SECRET_FILE = "/path/to/client_secret.json";
String REDIRECT_URI = "" //Leave empty if you don't have a redirect url

GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), new FileReader(CLIENT_SECRET_FILE));
GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(new NetHttpTransport(), JacksonFactory.getDefaultInstance(), "https://www.googleapis.com/oauth2/v4/token", clientSecrets.getDetails().getClientId(), clientSecrets.getDetails().getClientSecret(), authCode, REDIRECT_URI).execute();

String accessToken = tokenResponse.getAccessToken();
String refreshToken = tokenResponse.getRefreshToken();
Long expiresInSeconds = tokenResponse.getExpiresInSeconds();

最后,您可以将刷新 token 插入您的 GoogleCredential,如下所示:

GoogleCredential credential = new GoogleCredential.Builder()  
.setTransport(new NetHttpTransport())
.setJsonFactory(JacksonFactory.getDefaultInstance())
.setClientSecrets(clientSecrets)
.build();
credential.setAccessToken(accessToken);
credential.setExpiresInSeconds(expiresInSeconds);
credential.setRefreshToken(refreshToken);

就是这样。您可以获得有关此过程的更多信息 here .

关于android - GoogleSignIn - 如何刷新访问 token ?在文档中找不到任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66790964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com