使用Google云端硬盘API删除其他所有者的文件

时间:2014-05-26 17:02:04

标签: python google-drive-api

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

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

我找到的另一个解决方案是更改文件的所有者,但是我得到了同样的错误。

我使用Native Application oAuth和组织的SuperAdmin帐户以及服务帐户对其进行测试,但这些帐户都无法正常运行。

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

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()

我花了几个小时搜索并尝试了我发现的不同解决方案,但没有人工作(例如,Transfer ownership of a file fails - even as Super Administrator (Google Drive API, Java))。

有人有点想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

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

  1. 作为管理员帐户,确定每个文件的当前所有者。
  2. 使用delegated authorization冒充每个文件的所有者并将所有权转移到管理员帐户。
  3. 所有者的电子邮件地址需要使用委派授权,但在API返回的权限对象中并不总是可见。如果出现以下情况,将显示电子邮件地址:

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