我正在尝试通过google api oauth服务帐户为我的google云端硬盘帐户构建连接器。我正在使用java的官方gooogle客户端库。
public static Drive getDriveService() throws GeneralSecurityException,
IOException, URISyntaxException {
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential credentials = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JacksonFactory.getDefaultInstance())
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(Arrays.asList(new String[]{DriveScopes.DRIVE}))
.setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.setServiceAccountUser(ACCOUNT_USER)
.build();
Drive service = new Drive.Builder(httpTransport, JacksonFactory.getDefaultInstance(), credentials)
.setHttpRequestInitializer(credentials).build();
return service;
}
它是来自docs的基本样本。问题是它不起作用。执行后,我在json反序列化上获得了NullPointerException
。
因此,我使用源代码将此代码调试到谷歌库,我发现访问令牌的httpRequest返回状态代码401,内容为空。我对Google Calendar API使用了相同的方法,它没有任何问题。
有人能告诉我我做错了什么吗?或者有没有其他方式来访问我的文件而无需用户交互?感谢