通过服务帐户使用Google库访问驱动器API时,是否需要显式刷新令牌 答案:更多信息:参考文献:

问题描述

我有一个用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,对其进行签名,然后请求另一个访问令牌。

我希望这对您有帮助!

参考文献: