服务帐户创建的文件夹不会出现在Google云端硬盘网络应用程序中

时间:2019-05-21 02:48:48

标签: java google-api google-drive-api google-api-java-client service-accounts

无法在Google云端硬盘中查看使用Google API创建的文件夹。我正在使用服务帐户json连接到Google驱动器。我可以看到使用api创建的文件,但是无法查看使用api创建的文件夹。“

使用服务帐户连接到Google Drive

             GoogleCredential cr = GoogleCredential
            .fromStream(new FileInputStream(CREDENTIALS_FILE_PATH))
            .createScoped(SCOPES);
             GoogleCredential builder = new GoogleCredential.Builder()
            .setTransport(HTTP_TRANSPORT)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountScopes(SCOPES)
            .setServiceAccountId(cr.getServiceAccountId())
            `enter code here` 

            .setServiceAccountPrivateKey
            (cr.getServiceAccountPrivateKey())

            .setServiceAccountPrivateKeyId
             (cr.getServiceAccountPrivateKeyId())
            .setTokenServerEncodedUrl(cr.getTokenServerEncodedUrl())
            .setServiceAccountUser(cr.getServiceAccountUser()).build();

================================================ ======================

使用以下API创建文件夹

                File fileMetadata = new File();
                fileMetadata.setName("TestFolder");
                fileMetadata.setMimeType("application/vnd.google- 
                apps.folder");

                File file1 =
                service.files().create(fileMetadata).setFields("id, 
                name").execute();

我可以看到文件夹ID正在创建,但是当我登录google drive时,google drive中没有文件夹

1 个答案:

答案 0 :(得分:0)

您需要记住的是,服务帐户不是您。服务帐户是虚拟用户。它有自己的Google云端硬盘帐户。当您将文件上传到服务帐户驱动器帐户时,只有该帐户才可以访问,因为它是该帐户的所有者。

共享驱动器

您可以在Google驱动器帐户上创建一个与服务帐户电子邮件地址共享该目录的驱动器。然后,服务帐户可以上传到该驱动器(父)ID。然后,文件将出现在该驱动器中,请确保您已将服务帐户授予该文件的google帐户权限。

共享文件

如果要将文件保留在服务帐户驱动器帐户上,则只需让服务帐户与您共享文件,然后该文件就会在您的Google驱动器帐户中作为共享文件弹出。

共享

打开Goog​​le云端硬盘网站,右键单击要共享的目录或文件,然后单击共享。获取服务帐户的电子邮件地址并与之共享。然后它将有权访问该目录。

enter image description here