簡體   English   中英

Google drive API V3 從快捷方式獲取原始文件

[英]Google drive API V3 Fetch original file from shortcut

我有一個客戶上傳文件的 Google Drive 文件夾。 其中一些是實際的 GDrive 文件,還有一些是我有權讀取的其他驅動器或文件夾上的文件的快捷方式。 我可以使用 Python 庫成功get文件。 但是,對於快捷方式文件,我得到了一個目標 ID——但嘗試get該 ID 最終會出現 404 錯誤,即使我有權在 Web 瀏覽器上訪問它。

當我抓取我的驅動器並使用時:

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 是指通過應用程序驗證的用戶無權訪問該文件。

檢查清單:

  • 使用您對應用程序進行身份驗證的帳戶登錄到 Drive SDK,並嘗試訪問該文件。
  • 檢查您的應用程序是否使用正確的范圍,例如:如果您使用的是https://www.googleapis.com/auth/drive.file ,您只能訪問使用相應應用程序https://www.googleapis.com/auth/drive
  • 文檔中引用:
    • 通知用戶他們沒有文件的讀取權限或文件不存在。
    • 指示用戶聯系文件的所有者並請求文件的權限。

文檔:

要獲取原始文件,您必須有權訪問原始文件。 讓他們與您分享,而不是捷徑。

404 找不到文件

意味着該文件不存在,至少對您而言。 為了訪問私人用戶數據,必須具有訪問該文件的權限。

如果有人讓您訪問快捷方式。 這並不意味着您可以訪問文件本身。 如果他們只是給你一個文件鏈接的共享,你會遇到同樣的問題。 您沒有該文件的權限,因此您將無法通過 api 訪問它。

要獲得訪問權限,您必須已被授予權限。 它將顯示在文件調用的permssions.list中。

與用戶共享文件將授予權限,他們可以在 api 中使用它。

在此處輸入圖像描述

與我共享鏈接不會授予用戶訪問文件的權限。 它不會在權限中插入一行,因此用戶將無法通過 api 訪問。

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM