服务帐户创建的文件夹未出现在 google Drive Web 应用程序中

Service account created folders do not apear in google drive web application

无法查看在 google 驱动器中使用 google api 创建的文件夹。我正在使用服务帐户 json 连接到 google 驱动器。我可以看到使用 api 创建的文件,但无法查看使用 api 创建的文件夹。"

正在使用服务帐户连接到 google 驱动器

             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 驱动器时,google 驱动器

中没有文件夹

您需要记住的是服务帐户不是您。服务帐户是虚拟用户。它有自己的 google 驱动器帐户。当您将文件上传到服务帐户驱动器帐户时,它们只能由该帐户访问,因为它是它的所有者。

共享驱动器

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

共享文件

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

分享

打开 Google 驱动器网站,右键单击要共享的目录或文件,然后单击共享。获取服务帐户电子邮件地址并与之共享。然后它将可以访问该目录。