使用Google Drive API删除不同所有者的文件
我正在尝试做一个小应用程序,它可以读取我组织中不同用户的共享文件夹,获取文件后再删除它们。
问题是,我无法删除其他用户的文件,因为我只能删除自己拥有的文件(会收到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
现在最好的解决方案分为两个步骤:
- 作为管理员账号,找出每个文件的当前拥有者。
- 通过委托授权,假装成每个文件的拥有者,把文件的拥有权转移到管理员账号。
要使用委托授权,需要拥有者的邮箱地址,但这个邮箱地址并不总是能在API返回的权限信息中看到。只有在以下情况下,邮箱地址才会显示:
- 如果用户有Google+账号,他们的个人资料中的“联系信息”部分包含他们的主要邮箱地址,并且这个邮箱地址的可见性设置允许管理员账号查看。
- 如果用户在一个Google Apps域中,并且该域在管理员控制台的“Google Apps > 联系人 > 高级设置”中启用了联系人共享。