Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google drive api 配额、孤立文件和使用Google Drive API的服务帐户上载 上下文_Google Drive Api - Fatal编程技术网

Google drive api 配额、孤立文件和使用Google Drive API的服务帐户上载 上下文

Google drive api 配额、孤立文件和使用Google Drive API的服务帐户上载 上下文,google-drive-api,Google Drive Api,我正在构建一个php web应用程序,它需要将文件上传到属于某个用户(让我们称他为Bob)的Google驱动器。我用了一个(我们称之为service@gmail.com) Bob在他的谷歌硬盘中创建了一个文件夹(“上传”),并与他人共享service@gmail.com. 服务帐户(service@gmail.com)可以使用驱动器API列出共享上载文件夹中的文件并将文件上载到该文件夹。上传的文件也会显示在Bob的Google Drive中。到目前为止还不错 问题 由上载的文件的所有者servi

我正在构建一个php web应用程序,它需要将文件上传到属于某个用户(让我们称他为Bob)的Google驱动器。我用了一个(我们称之为service@gmail.com)

Bob在他的谷歌硬盘中创建了一个文件夹(“上传”),并与他人共享service@gmail.com.

服务帐户(service@gmail.com)可以使用驱动器API列出共享上载文件夹中的文件并将文件上载到该文件夹。上传的文件也会显示在Bob的Google Drive中。到目前为止还不错

问题 由上载的文件的所有者service@gmail.com是service@gmail.com如人们所料。这将产生以下后果:

  • 自service@gmail.com是上载文件的所有者,它们将计入该帐户的配额。然而,Bob为他的Google硬盘购买了更多的空间,并希望上传的文件能计入他的配额,以免耗尽服务帐户中的空间
  • 当以前上载的文件service@gmail.com(由Bob)从共享上载文件夹中删除,会发生以下情况:
    • 已删除的文件不会显示在任一用户的上载文件夹中
    • Bob仍然可以在“所有项目”视图中看到已删除的文件
    • 当服务帐户通过API列出所有文件,但没有任何父文件(即,它是孤立的)时,已删除的文件仍会出现混乱
    • 当通过API获取已删除文件的详细信息时,它表明已用完配额
  • 怎么办? 如何(干净地)处理这个用例?我认为有两种可能的解决方案:

  • 上载文件时,将所有权设置为Bob。可能吗?这不行!首先,它不适用于普通帐户的上传文件。其次,服务帐户有一封电子邮件@developer.gserviceaccount.com,而鲍勃的帐户有@gmail.com。从这本书中可以看出:
  • 谷歌应用程序客户:你不能让你域外的人成为你谷歌文档的所有者。只有Premier、Government和Education域中的Google Apps客户才能转移同步或上载文件(如PDF或图像文件)的所有权

    消费者驱动器用户:您不能转移同步或上载文件(如PDF或图像文件)的所有权

  • 不要使用服务帐户,而是让web应用直接使用Bob的帐户。但是,这确实需要为Bob获取OAuth访问令牌。此外,使用带有共享上载文件夹的服务帐户可以将服务帐户的访问权限限制为仅访问上载文件夹
  • 定期搜索服务帐户中的孤立文件以清理它们。但是,这并不能解决用于未删除文件的配额问题
  • 请帮忙


    关于

    的信息我想你应该看到这个页面:。此页面显示如何使用SA代表
    Bob
    用户调用请求。此页面包含
    Java
    代码,描述如何为
    Bob
    创建
    Drive
    对象。使用此
    驱动器
    您将能够上载文件,并且文件的所有者将是
    Bob
    不是service@gmail.com. 我经常使用这种方法,它对我很有效。

    非常有趣,谢谢。我使用的是一个与谷歌应用程序开发账户无关的普通账户,但我会尝试一下。我必须确保Bob也使用Google应用程序。