com.google.api.client.auth.oauth2.TokenResponseException:401 Unauthorized

时间:2016-11-29 22:55:54

标签: java google-drive-api

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

我使用此配置:

enter image description here

你能说清楚如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

根据此SO question,您收到错误401的一个原因是您使用的服务帐户无法访问与您的Gmail地址关联的云端硬盘帐户。因此,如果您希望能够访问上传的文件,您必须通过服务帐户授予自己访问权限的权限。

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