gpt4 book ai didi

java - 获取 Google Drive API 的 OAuth 凭据

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:55 26 4
gpt4 key购买 nike

我正在尝试通过我正在开发的应用程序访问谷歌驱动器上的一些文件。不幸的是,我在获取凭据时遇到了困难。我已经创建了一个 Google 服务帐户,提供的电子邮件地址和私钥应该没问题。但是,当从下面调用方法 getDriveService() 时,我收到错误

java.lang.NullPointerException
at java.util.Collections$UnmodifiableCollection.<init>(Unknown Source)
at java.util.Collections.unmodifiableCollection(Unknown Source)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.<init>(GoogleCredential.java:321)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder.build(GoogleCredential.java:515)

我在这里做错了什么吗?

到目前为止我的代码:

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;

import java.security.GeneralSecurityException;
import java.io.IOException;
import java.net.URISyntaxException;

private static final String SERVICE_ACCOUNT_EMAIL = "VERY_LONG_ID@developer.gserviceaccount.com";
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "/home/user/googledriveKey.p12";

public static Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException {
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(credential).build();
return service;
}

最佳答案

文档清楚地显示了如何获取凭据(这是您已经拥有的凭据):

GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(DriveScopes.DRIVE)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();

来源:https://developers.google.com/drive/web/service-accounts

如果您想从单个用户的 google drive 访问数据,您还需要调用

   .setServiceAccountUser(userEmail)

来源:https://developers.google.com/drive/web/delegation#instantiate_a_drive_service_object

关于java - 获取 Google Drive API 的 OAuth 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25884935/

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