我正在使用Google驱动器REST API V3来访问文件。基本的api网址是: https://www.googleapis.com/drive/v3/files/fileid
并且标头包含密钥:具有从oauth获得的Bearer访问令牌的授权。
但是,如果您创建普通的Google文档,则可以使用。响应是:
{
"id": "1v3V0BWcWtYu_K9OLm1rffHA3vj5Bz8SY-0-JpU7CiEc",
"name": "test",
"mimeType": "application/vnd.google-apps.document",
"parents": [
"0AP75Wn-e9WDqUk9PVA"
]
}
但是,如果我是通过 google模板创建的google文档,则返回404。请参见下文:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: 14gHUCFTrwHaoZ88Kr0Qnn8OsUdzcU037GK7v-JI9L1I.",
"locationType": "parameter",
"location": "fileId"
}
],
"code": 404,
"message": "File not found: 14gHUCFTrwHaoZ88Kr0Qnn8OsUdzcU037GK7v-JI9L1I."
}
}
答案 0 :(得分:0)
事实并非如此。我使用简历模板创建了一个google doc。我获得了fileID并针对files.get运行它。我收到200条回复:
{
"kind": "drive#file",
"id": "1y1h2vHYwrb57O-ein7VhqMwwJKtr4pP4N4bBow7-vus",
"name": "resumeTemplate",
"mimeType": "application/vnd.google-apps.document"
}
顺便说一句,files.get
的URI请求是
https://www.googleapis.com/drive/v3/files/fileId
不是
https://www.googleapis.com/drive/v3/files/
答案 1 :(得分:0)
我做了一点测试,发现“ drive.file”范围实际上在获取文件元数据/内容方面存在一些问题。从文档中,“ drive.file”允许该应用访问此应用创建的文件,或者用户从驱动器或Google文档中使用该应用显式打开文件。当我对此进行测试时,实际上这并没有按预期进行。我上传了一些文件,我的应用可以访问其中一个文件,而其他文件则不能。我记得当我发布应用程序时,谷歌驱动器团队审查了我的应用程序,并拒绝了几次有关该范围的检查,最后该应用程序仅通过了“ drive.file”范围的审查。
有人遇到过同样的问题吗?
答案 2 :(得分:0)
我请求更多权限后,问题解决了。没有改变。
答案 3 :(得分:0)
此处仅作后代之用:将drive.file权限与文件选择器一起使用时,只有当选择器位于与Google Developer Console驱动器SDK中配置的域相同的域上时,您收到的url /令牌才会起作用配置页面(https://console.developers.google.com/apis/api/drive.googleapis.com/drive_sdk)。
如果您将其托管在任何其他域上,则尝试使用URL直接下载文件将得到404:您需要使用drive.readonly或驱动器权限。
答案 4 :(得分:0)
就我而言,这与设置Drive.files().get(googleId).setSupportsAllDrives(true)
来访问共享驱动器上的文件有关。
答案 5 :(得分:0)
此处为 2021 年的答案,就我而言,问题(某些文件为 404)存在是因为我使用的 Google 项目编号错误。
更难的是,有些帐户确实工作得很好,而有些则没有只使用这个范围:
https://www.googleapis.com/auth/drive.file
如选择器的谷歌文档所示:
// Replace with your own project number from console.developers.google.com.
// See "Project number" under "IAM & Admin" > "Settings"
const appId = "1234567890";
在项目编号确定后,一切都开始完美运行(不需要 https://www.googleapis.com/auth/drive
范围,因为它是一个免费范围,可以为所有内容提供权限)。
干杯。