如何使用 GoogleCredentials 而不是已弃用的 GoogleCredential 来初始化 Google 驱动器
How to initialise Google drive using GoogleCedentials instead of the deprecated GoogleCedential
我有 java 使用服务帐户连接到 google 驱动器的代码,这有效:
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();
但是我收到弃用警告,指出 GoogleCredential
已弃用,我应该使用 google-auth-library
中的 GoogleCredentials
(注意末尾的额外 s)。
我可以这样初始化GoogleCredentials
:
GoogleCredentials credential = GoogleCredentials.fromStream(new FileInputStream("sa.json"))
.createScoped(List.of(DriveScopes.DRIVE))
.createDelegated("foo@bar.com");
但是我似乎无法弄清楚如何使用这个新的 GoogleCredentials
对象来初始化驱动器服务。传递它代替凭证对象会导致编译器错误,并且所有官方 google 驱动器 java 文档都引用现在已弃用的方法。
谁能告诉我如何使用新的凭据对象初始化 google 驱动器?
我使用的版本:
<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>
要连接到 Google 驱动器,请使用 HttpCredentialsAdapter 建立从 GoogleCredentials
到 GoogleCredential
的连接。
样本:
return new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, new HttpCredentialsAdapter(credential))
.setApplicationName("my-drive-app")
.build();
我有 java 使用服务帐户连接到 google 驱动器的代码,这有效:
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();
但是我收到弃用警告,指出 GoogleCredential
已弃用,我应该使用 google-auth-library
中的 GoogleCredentials
(注意末尾的额外 s)。
我可以这样初始化GoogleCredentials
:
GoogleCredentials credential = GoogleCredentials.fromStream(new FileInputStream("sa.json"))
.createScoped(List.of(DriveScopes.DRIVE))
.createDelegated("foo@bar.com");
但是我似乎无法弄清楚如何使用这个新的 GoogleCredentials
对象来初始化驱动器服务。传递它代替凭证对象会导致编译器错误,并且所有官方 google 驱动器 java 文档都引用现在已弃用的方法。
谁能告诉我如何使用新的凭据对象初始化 google 驱动器?
我使用的版本:
<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>
要连接到 Google 驱动器,请使用 HttpCredentialsAdapter 建立从 GoogleCredentials
到 GoogleCredential
的连接。
样本:
return new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, new HttpCredentialsAdapter(credential))
.setApplicationName("my-drive-app")
.build();