如何使用 GoogleCedentials 而不是已弃用的 GoogleCedential 来初始化 Google 驱动器

Con*_*scu 5 java google-api-java-client google-drive-api

我有 java 代码使用服务帐户连接到谷歌驱动器,这有效:

JsonFactory JSON_FACTORY = new GsonFactory();

GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("sa.json"))
                .createScoped(List.of(DriveScopes.DRIVE))
                .createDelegated("foo@bar.com");

return new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, credential)
                .setApplicationName("my-drive-app")
                .build();
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一条GoogleCredential已弃用的弃用警告,我应该使用GoogleCredentials(注意末尾的额外 s)来代替google-auth-library

GoogleCredentials我可以这样初始化:

GoogleCredentials credential = GoogleCredentials.fromStream(new FileInputStream("sa.json"))
                .createScoped(List.of(DriveScopes.DRIVE))
                .createDelegated("foo@bar.com");
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法弄清楚如何使用这个新GoogleCredentials对象初始化驱动服务。传递它来代替凭证对象会产生编译器错误,并且所有官方 googledrive java 文档都引用了现在已弃用的方法。

有人可以告诉我如何使用新的凭据对象初始化谷歌驱动器吗?

我正在使用的版本:

    <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client</artifactId>
      <version>1.32.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.oauth-client</groupId>
      <artifactId>google-oauth-client-jetty</artifactId>
      <version>1.32.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.apis</groupId>
      <artifactId>google-api-services-drive</artifactId>
      <version>v3-rev20210919-1.32.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.auth</groupId>
      <artifactId>google-auth-library-oauth2-http</artifactId>
      <version>1.2.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

zig*_*hka 5

要连接到 Google Drive,请使用HttpCredentialsAdapter建立从GoogleCredentials到 的连接GoogleCredential

样本:

return new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, new HttpCredentialsAdapter(credential))
                .setApplicationName("my-drive-app")
                .build();
Run Code Online (Sandbox Code Playgroud)