问题描述
我有一个用Java编写的应用程序,该应用程序通过服务帐户使用Google SDK for drive API将文件上传到Google Drive。我想了解我确实需要显式处理访问令牌到期问题,因为据我了解,SDK本身会检查并刷新令牌(如果令牌过期)。 我可能是错的,但是我没有找到有关服务帐户令牌刷新的任何文档。 任何对此的解释将非常有帮助。 如果有帮助,我已附加了Google授权代码。
public void init() throws Exception {
// consider gAuth is a google_scret.json file
gAuth = SecretsUtil.getSecret("auth");
credentials = GoogleCredentials.fromStream(new ByteArrayInputStream(gAuth.getBytes()))
.createScoped(DriveScopes.all());
requestInitializer = new HttpCredentialsAdapter(credentials);
log.info("Google Auth Service Initialized");
}
public HttpRequestInitializer getCredential() {
return requestInitializer;
}
解决方法
答案:
不需要,这已为您处理。
更多信息:
从文档中:
服务帐户使用的OAuth 2.0流不需要人工授权。相反,它使用只有您的应用程序可以访问的密钥文件。
这个想法是,服务帐户将继续运行,执行所需的操作,而无需任何人进行任何交互,以便客户端库为您处理。
由Google OAuth 2.0授权服务器发行的访问令牌会在发布后一小时内失效。当访问令牌过期时,应用程序应生成另一个JWT,对其进行签名,然后请求另一个访问令牌。
我希望这对您有帮助!