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

问题描述 投票:0回答:3

我有一个使用 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"
        }]
    }
}

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

javascript google-api google-drive-api
3个回答
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.get
时,我收到了
https://www.googleapis.com/auth/drive.file
错误,使用从最开始的
access-token
上传它的帐户。

看起来您必须使用

https://www.googleapis.com/auth/drive
范围来访问文件,但是如果不使用
alt=media
,则
https://www.googleapis.com/auth/drive.metadata
https://www.googleapis.com/auth/drive.metadata.readonly
范围足以访问该文件。

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


0
投票

我认为问题不在于您正在使用的范围,根据云端硬盘文档,使用“https://www.googleapis.com/auth/drive.file”应该足以运行查询。另一方面,查看错误:

"code": 404,
"message": "File not found: 1OQSUO7ObmEavKMXXkxNuG12vffqVi-Gk.",

在我看来,查询的 FileID 末尾有一个

.
,这可能是 Drive API 抛出 404 错误的原因,请记住文件 ID 末尾没有特殊字符。尝试删除文件 ID 末尾的“点”,并告诉我们这是否对您有用! :)

参考资料:


0
投票

我也面临着同样的问题。你找到解决办法了吗?

我正在使用drive.file范围(“drive”一切正常,但oAuth团队不允许此范围用于生产:/)

谢谢你

© www.soinside.com 2019 - 2024. All rights reserved.