【问题标题】:How to delete a file owned by another user如何删除其他用户拥有的文件
【发布时间】:2018-08-12 09:37:56
【问题描述】:

作为 a 文件夹的所有者,我想使用 v3 python files API 来删除另一个用户拥有的文件。这是一个反复出现的话题,但我还没有找到完全解释工作流程的解决方案。

我所做的一般假设是我应该能够删除我拥有的文件夹中的文件。

范围:https://www.googleapis.com/auth/drive

尝试永久删除文件时:

service.files().delete( fileId=file_id ).execute()

结果:

<HttpError 403 when requesting https://www.googleapis.com/drive/v3/files/1zbEBsHRpqbGkDJ6Gh5eU8OxU4IVEAo0I? returned "The user does not have sufficient permissions for this file.">

尝试删除文件时:

service.files().update( fileId=file_id, body={'trashed':True} ).execute()

结果:

ERROR: Error deleting file: <HttpError 403 when requesting https://www.googleapis.com/drive/v3/files/1zbEBsHRpqbGkDJ6Gh5eU8OxU4IVEAo0I?alt=json returned "The user does not have sufficient permissions for this file.">

如果我尝试更新文件权限以将所有者重新定义为我自己:

perms = { 'emailAddress': '<myemail>@gmail.com', 'type': 'user', 'role': 'owner', 'kind': 'drive#permission' }
service.permissions().create( fileId=file_id, transferOwnership=True, body=perms ).execute()

结果:

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/drive/v3/files/1zbEBsHRpqbGkDJ6Gh5eU8OxU4IVEAo0I/permissions?alt=json&transferOwnership=true returned "Bad Request. User message: "Sorry, you do not have permission to share."">

这个主题的变体一直在流传,但我还没有找到可行的解决方案。

【问题讨论】:

  • 为什么 Google API 允许您删除不属于您的文件?为什么?
  • 一个有效的问题。我的回答是:父文件夹属于我。这并非完全史无前例。我被允许删除 linux 目录中另一个用户的文件,其所有者 uid 与我的相同(而不是 root 用户)。

标签: python-2.7 google-api google-drive-api google-api-python-client


【解决方案1】:

“用户对此文件没有足够的权限。”

意味着您没有执行您尝试执行的操作所需的权限。您不能删除不属于您的文件。即使该文件位于您拥有的目录中。这是谷歌驱动的限制,与你的代码无关。

解决方案是让文件的所有者将其删除或将相关文件的所有权授予您。

【讨论】:

  • 感谢您的回答。我可以从 Drive Web UI 中删除文件(属于另一个用户)。如果我能够从 WebUI 中删除它,那为什么我无法使用 REST/python 执行相同的操作?
  • 退后一步,我的用例是:我向一个或多个人发送一个请求以将文件上传到我的驱动器。我使用运行 python 脚本的 cron 作业从谷歌驱动器本地下载文件。然后从我的谷歌驱动器中删除文件。直到删除文件为止的所有内容都像魅力一样。
  • 使用 cron 作业的服务帐户?
  • 我正在使用 已安装的应用程序(OAuth 并缓存令牌以供后续访问 - 效果很好)。使用服务帐号有什么限制吗?我在早期使用服务帐户时遇到了一些麻烦。
  • 只有您需要记住授予自己访问服务帐户上传的文件的权限。问题是您可以使用网络版本执行一些您已经注意到的 API 无法执行的操作
猜你喜欢
  • 2019-05-10
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
相关资源
最近更新 更多