使用Google Drive API从其他所有者删除文件
作者:互联网
我正在尝试做一个小型应用程序,该应用程序读取与组织中不同用户的共享文件夹,获取文件,然后将其删除.
问题是我无法删除其他用户的文件,因为我只能删除拥有所有权的文件(接收到该文件的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()
我花了数小时来搜索并尝试找到的不同解决方案,但是没有人可以使用(例如Transfer ownership of a file fails – even as Super Administrator (Google Drive API, Java)).
有人有主意吗?谢谢!
解决方法:
现在最好的解决方案包括两个步骤:
>作为管理员帐户,确定每个文件的当前所有者.
>使用delegated authorization,模拟每个文件的所有者,并将所有权转移到admin帐户.
必须使用所有者的电子邮件地址才能使用委派授权,但在API返回的权限对象中并不总是可见.如果符合以下任一条件,则将显示该电子邮件地址:
>用户拥有一个Google帐户,其个人资料的“联系信息”部分包括其主要电子邮件地址,并且该电子邮件地址的可见性设置为包括管理员帐户的级别.
>该用户位于Google Apps域中,并且该域已在管理控制台中的“ Google Apps>联系人>高级设置”下启用了联系人共享.
标签:python,google-drive-api 来源: https://codeday.me/bug/20191009/1879489.html