使用Google Drive API删除不同所有者的文件

3 投票
1 回答
2637 浏览
提问于 2025-04-18 07:38

我正在尝试做一个小应用程序,它可以读取我组织中不同用户的共享文件夹,获取文件后再删除它们。

问题是,我无法删除其他用户的文件,因为我只能删除自己拥有的文件(会收到403错误,提示权限不足)。

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

我用一个超级管理员账户和一个服务账户测试了这个功能,但都没有成功。

这是我尝试更改文件所有权的代码片段:

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 个回答

1

现在最好的解决方案分为两个步骤:

  1. 作为管理员账号,找出每个文件的当前拥有者。
  2. 通过委托授权,假装成每个文件的拥有者,把文件的拥有权转移到管理员账号。

要使用委托授权,需要拥有者的邮箱地址,但这个邮箱地址并不总是能在API返回的权限信息中看到。只有在以下情况下,邮箱地址才会显示:

  • 如果用户有Google+账号,他们的个人资料中的“联系信息”部分包含他们的主要邮箱地址,并且这个邮箱地址的可见性设置允许管理员账号查看。
  • 如果用户在一个Google Apps域中,并且该域在管理员控制台的“Google Apps > 联系人 > 高级设置”中启用了联系人共享。

撰写回答