【问题标题】:com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorizedcom.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized
【发布时间】:2017-04-14 02:57:28
【问题描述】:

我想使用 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

我使用这个配置:

你能告诉我如何解决这个问题吗?

【问题讨论】:

  • 我认为您不能使用 setServiceAccountUser,除非它是域管理员帐户,并且您已将服务帐户添加到管理员帐户,并且相关用户也是管理员帐户的用户。跨度>
  • 你能给出它抛出的总错误和异常吗?
  • 您找到解决方案了吗?请提供您的答案。

标签: java google-drive-api


【解决方案1】:

基于此SO question,您收到错误 401 的原因之一是您使用的服务帐户无权访问与您的 Gmail 地址关联的驱动器帐户。因此,如果您希望能够访问它上传的文件,您必须通过服务帐户授予自己对它们的访问权限。

以下是我认为可以帮助您了解更多服务帐户的其他 SO 问题

【讨论】:

  • 感谢您的回复,但我仍然找不到解决方案。你能提供更多细节吗?
  • @PeterPenzov 你找到解决这个问题的方法了吗?非常感谢提前
  • 不,我还没有。
猜你喜欢
  • 1970-01-01
  • 2017-03-16
  • 2017-09-04
  • 2017-03-22
  • 1970-01-01
  • 2017-10-30
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多