我想使用 Java Google Drive API。 我试过这段代码:
public Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException
{
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("sonoratestw-226@sonora-project.iam.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File(new java.io.File("C:\\buffer\\sonora project-3256770463ed.p12"))
.setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
.setServiceAccountUser("sonoratestw@gmail.com")
.build();
Drive service = new Drive.Builder(httpTransport, JSON_FACTORY, null)
.setApplicationName("FileListAccessProject")
.setHttpRequestInitializer(credential).build();
return service;
}
但是我得到这个错误:
An error occurred: com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized
我使用这个配置:
你能告诉我如何解决这个问题吗?
最佳答案
基于此SO question ,您收到错误 401 的原因之一是您使用的服务帐户无权访问与您的 Gmail 地址关联的驱动器帐户。因此,如果您希望能够访问它上传的文件,您必须通过服务帐户授予自己访问权限。
以下是我认为可以帮助您更多地了解服务帐户的其他 SO 问题
关于java - com.google.api.client.auth.oauth2.TokenResponseException : 401 Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40877302/