无法使用 Google Drive API v3 从其他帐户检索文件

And*_*eek 5 javascript google-api google-drive-api

我有一个使用 GoogleFilePicker 获得的图像文件。使用 GoogleFilePicker 中的 FileId,我尝试使用以下 URL 检索文件:https://www.googleapis.com/drive/v3/files/${FileId}?alt=media&supportsAllDrives=true

accessToken 的范围是“https://www.googleapis.com/auth/drive.file”。当我尝试使用主帐户(文件存在于其中)检索文件时,一切正常。但是,如果我想从另一个帐户(文件与该帐户共享)检索文件,我会遇到问题 404。

{
    "error": {
        "code": 404,
        "message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",
        "errors": [{
            "message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",
            "domain": "global",
            "reason": "notFound",
            "location": "fileId",
            "locationType": "parameter"
        }]
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以获取没有范围“https://www.googleapis.com/auth/drive”而仅使用“https://www.googleapis.com/auth/drive.file”的文件?

小智 4

Google oAuth2 文档https://www.googleapis.com/auth/drive.file被授予访问权限See, edit, create, and delete only the specific Google Drive files you use with this app.,这可能意味着您只能访问由您的网络应用程序/移动应用程序创建的所有文件,而不能访问在其外部创建的文件,例如手动上传到 Google 云端硬盘或从其他应用程序上传的文件。

尝试通过驱动器 API 的试用沙箱重现您的案例,当我使用文件上的范围运行File not found时出现错误file.gethttps://www.googleapis.com/auth/drive.fileaccess-token出现错误。

看起来您必须使用范围访问该文件https://www.googleapis.com/auth/drive,但是如果它不使用alt=media、 thehttps://www.googleapis.com/auth/drive.metadatahttps://www.googleapis.com/auth/drive.metadata.readonly范围足以访问该文件。

其他问题: Google Drive api 范围和文件访问(drive 与drive.files)