gpt4 book ai didi

python - Google Drive API V3 从快捷方式获取原始文件

转载 作者:行者123 更新时间:2023-12-05 05:39:58 24 4
gpt4 key购买 nike

我有一个 Google Drive 文件夹,客户正在将文件上传到该文件夹​​。其中一些是实际的 GDrive 文件,一些是我有权读取的其他驱动器或文件夹上的文件的快捷方式。我可以使用 Python 库成功地 get 文件。但是,对于快捷方式文件,我获得了一个目标 ID - 但尝试获取该 ID 以 404 错误结束,即使我有权在网络浏览器上访问它也是如此。

当我抓取我的驱动器并使用时:

results = service.files().list(
pageSize=10, fields="nextPageToken, files(id, name)").execute()
items = results.get('files', [])

我得到了我的整个驱动器,这意味着我的驱动器上有关于任何文件和文件夹的每个元数据。一些主题是 MimeType:'application/vnd.google-apps.shortcut'。这些文件有一个名为:'shortcutDetails' 的附加字段。它看起来像这样:

'shortcutDetails': {'targetId': SOME_ID, 'targetMimeType': SOME_MIMETYPE}

targetId 应该指向原始文件,但当我尝试获取该文件时,我收到床位请求 404 找不到文件,我想是因为它不在我的驱动器中。我正在使用这个功能:

def resolve_shortcut(service, target_id):
logging.info(f"Resolving shortcut with target: {target_id}")
results = service.files().get(fileId=target_id, fields="files(*)", supportsAllDrives=True).execute()
raw_files = results.get("files", [])
logging.info(f"Shortcut resolved, first result id: {raw_files[0]['id']}...")
assert len(raw_files) == 1
return raw_files[0]

我得到返回:

  <HttpError 404 when requesting
https://www.googleapis.com/drive/v3/files/SOME_ID?fields=files%28%2A%29&supportsAllDrives=true&alt=json
returned "File not found:
SOME_ID.". Details: "[{'domain':
'global', 'reason': 'notFound', 'message': 'File not found:
SOME_ID.', 'locationType':
'parameter', 'location': 'fileId'}]">

有什么方法可以获取原始文件吗?谢谢!

最佳答案

使用Files.get方法的404错误是指通过应用程序认证的用户没有访问该文件的权限。

检查 list :

  • 使用您验证应用程序的同一帐户登录到 Drive SDK,并尝试访问该文件。
  • 检查您的应用程序是否使用了正确的范围,例如:如果您使用的是 https://www.googleapis.com/auth/drive.file,您只有 访问使用相应应用https://www.googleapis.com/auth/drive
  • 打开或创建的文件
  • documentation 中提到:
    • 通知用户他们没有文件的读取权限或文件不存在。
    • 指示用户联系文件的所有者并请求对文件的许可。

文档:

关于python - Google Drive API V3 从快捷方式获取原始文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72543254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com