当前位置: 首页 > 面试题库 >

使用Google Drive API从其他所有者删除文件

连曜灿
2023-03-14
问题内容

我正在尝试做一个小型应用程序,该应用程序读取与组织中不同用户的共享文件夹,获取文件,然后将其删除。

问题是我无法删除其他用户的文件,因为我只能删除拥有所有权的文件(接收到该文件的403权限不足)

我发现的另一个解决方案是更改文件的所有者,但出现相同的错误。

我使用带有组织的SuperAdmin帐户和服务帐户的本机应用程序oAuth对其进行了测试,但它们均无效。

我的一段代码试图更改所有权:

new_permission = {
    'value': "admin@organization.com",
    'type': "user",
    'role': "writer"
}
perm = drive_service.permissions().insert(fileId=idfield, body=new_permission).execute()
perm['role'] = 'owner'
drive_service.permissions().update(fileId=idfield, permissionId=perm['id'], transferOwnership=True, body=perm).execute()

我花了数小时来搜索并尝试找到的其他解决方案,但是没有一个可行(例如,即使拥有超级管理员(Google Drive
API,Java),也无法转让文件所有权
)。

有人有主意吗?谢谢!


问题答案:

现在最好的解决方案包括两个步骤:

  1. 作为管理员帐户,确定每个文件的当前所有者。
  2. 使用委派授权,模拟每个文件的所有者并将所有权转移到admin帐户。

必须使用所有者的电子邮件地址才能使用委派授权,但是在API返回的权限对象中并不总是可见。如果符合以下任一条件,则将显示该电子邮件地址:

  • 用户拥有一个Google+帐户,其个人资料的“联系信息”部分包括其主要电子邮件地址,并且该电子邮件地址的可见性设置为包含管理员帐户的级别。
  • 该用户位于Google Apps域中,并且该域已在管理控制台中的“ Google Apps>联系人>高级设置”下启用了联系人共享。


 类似资料:
  • 我有这个actionlistener添加到一个按钮: 这是jPanel和jbutton的代码: 我怎样才能让它删除jframe的所有组件,除了名为buttonPanel的jpanel?

  • 问题内容: 例如,我有一个名为“ Temp”的文件夹,我想使用PHP删除或刷新此文件夹中的所有文件。我可以这样做吗? 问题答案: 如果要删除“隐藏”文件(如.htaccess),则必须使用

  • 我是Java和Android开发人员的新手,来自更多的C++背景。我用这个问题作为指导创建了一个kiosk/cosu应用程序。我将应用程序设置为设备管理,使用

  • 问题内容: $(“#topNav” + $(“#breadCrumb2nd”).text().replace(” “, “”)).addClass(“current”); 这是我的代码的一部分。我想在获取另一个ID的text属性后向ID添加一个类。问题在于,持有我需要的文本的ID包含字母之间的空格。 我希望删除空白。我已经尝试过,但这只能部分起作用。该只删除第一个空间。 问题答案: 您必须告诉re

  • 问题内容: 如何使用Java将所有文件从一个文件夹移动到另一文件夹?我正在使用此代码: 但它仅适用于一个特定文件。 谢谢!!! 问题答案: 如果对象指向文件夹,则可以遍历其内容

  • 我想使用docx4j删除docx文件中的所有注释。 我可以使用如下所示的一段代码删除实际的注释,但我认为我也需要从主文档部分删除注释引用(否则文档已损坏),但我不知道如何做到这一点。 感谢您的指导! 我还在docx4j论坛上发布了这个问题:http://www.docx4java.org/forums/docx-java-f6/how-to-remove-all-comments-from-doc