找不到文件错误 Google 驱动器 API
File not found error Google Drive API
我正在使用 Drive REST API 下载文件。我正在使用文件 ID 发出 GET 请求,我得到 file not found exception
.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: xxxxx",
"locationType": "other",
"location": "file"
}
],
"code": 404,
"message": "File not found: xxxxx"
}
}
我还生成了 apikey,我在我的 GET 中使用它 request.The 文件确实存在,所以我不确定我在这里遗漏了什么。
已解决。在对文件元数据发出 GET 请求时,我没有提供正确的 access_token。我重新生成了授权码,access_token,我的代码现在可以使用了。
确保范围是正确的
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: ['https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive.metadata'
]
});
Drive API 声明了以下范围。 Select 你想授予 APIs Explorer 哪些。
- https://www.googleapis.com/auth/drive
查看和管理您的 Google 驱动器
中的文件
- https://www.googleapis.com/auth/drive.appdata
在您的 Google 驱动器
中查看和管理自己的配置数据
- https://www.googleapis.com/auth/drive.file
查看和管理您使用此应用打开或创建的 Google 云端硬盘文件和文件夹
- https://www.googleapis.com/auth/drive.metadata
查看和管理 Google 驱动器
中文件的元数据
- https://www.googleapis.com/auth/drive.metadata.readonly
查看 Google 驱动器
中文件的元数据
- https://www.googleapis.com/auth/drive.photos.readonly
查看您的 Google 照片
中的照片、视频和相册
- https://www.googleapis.com/auth/drive.readonly
查看 Google 驱动器
中的文件
- https://www.googleapis.com/auth/drive.scripts
修改您的 Google Apps Script 脚本的行为
来源:https://developers.google.com/apis-explorer/#p/drive/v3/drive.files.get
在我的例子中,我使用的文件 client_secret.json
是我用我一直使用的 gmail 地址创建的,但我是用另一封电子邮件创建凭据的。
我会检查您要为其检索元数据的文件是否是团队驱动器的一部分;如果是,则必须在请求中设置 supportsTeamDrives=True
。
就我而言,我只是没有授予我的服务帐户访问该文件夹的权限。只需通过网络界面分享即可解决问题。
要使用的电子邮件地址:
在此处检查您的服务帐户的电子邮件地址:
电子邮件地址将如下所示:
name-of-service-account@name-of-project.iam.gserviceaccount.com
如果您收到这样的回复:
<HttpError 404 when requesting https://www.googleapis.com/drive/v3/files/REDACTED_FILE_ID/copy?alt=json returned "File not found: REDACTED_FILE_ID.". Details: "[{'domain': 'global', 'reason': 'notFound', 'message': 'File not found: REDACTED_FILE_ID.', 'locationType': 'parameter', 'location': 'fileId'}]">
并且 fileId 指向共享驱动器上的文件,您需要在请求参数中包含 supportsSharedDrives=true。
Google 在他们的 Implement shared drive support 文章中提供了更多详细信息。
这是一个使用 Python 创建副本的小示例:
googledrive = build('drive', 'v3', credentials=creds)
copy_response = googledrive.files().copy(
fileId=TEMPLATE_SPREADSHEET_ID,
body={
"parents": [
report_folder_id,
],
'title': report_title
},
supportsAllDrives=True
).execute()
为了 运行,您需要将其混合到 Python Quickstart for Google Drive API 的示例代码中。
我遇到这个问题是因为我在使用 update
方法时遇到“找不到文件”错误。
我在 Python 中使用这一行来执行方法:
files_res.update(fileId=f_id, body={"name": f_name}).execute()
我可以列出 shared 文件及其父文件,但更新失败,无论此错误的范围如何:
...
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: 1YqV...",
"locationType": "parameter",
"location": "fileId"
}
],
"code": 404,
...
我在方法中添加了 supportsAllDrives=True
参数并且它起作用了:
files_res.update(fileId=f_id, body={"name": f_name}, supportsAllDrives=True).execute()
我正在使用 Drive REST API 下载文件。我正在使用文件 ID 发出 GET 请求,我得到 file not found exception
.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: xxxxx",
"locationType": "other",
"location": "file"
}
],
"code": 404,
"message": "File not found: xxxxx"
}
}
我还生成了 apikey,我在我的 GET 中使用它 request.The 文件确实存在,所以我不确定我在这里遗漏了什么。
已解决。在对文件元数据发出 GET 请求时,我没有提供正确的 access_token。我重新生成了授权码,access_token,我的代码现在可以使用了。
确保范围是正确的
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: ['https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive.metadata'
]
});
Drive API 声明了以下范围。 Select 你想授予 APIs Explorer 哪些。
- https://www.googleapis.com/auth/drive 查看和管理您的 Google 驱动器 中的文件
- https://www.googleapis.com/auth/drive.appdata 在您的 Google 驱动器 中查看和管理自己的配置数据
- https://www.googleapis.com/auth/drive.file 查看和管理您使用此应用打开或创建的 Google 云端硬盘文件和文件夹
- https://www.googleapis.com/auth/drive.metadata 查看和管理 Google 驱动器 中文件的元数据
- https://www.googleapis.com/auth/drive.metadata.readonly 查看 Google 驱动器 中文件的元数据
- https://www.googleapis.com/auth/drive.photos.readonly 查看您的 Google 照片 中的照片、视频和相册
- https://www.googleapis.com/auth/drive.readonly 查看 Google 驱动器 中的文件
- https://www.googleapis.com/auth/drive.scripts 修改您的 Google Apps Script 脚本的行为
来源:https://developers.google.com/apis-explorer/#p/drive/v3/drive.files.get
在我的例子中,我使用的文件 client_secret.json
是我用我一直使用的 gmail 地址创建的,但我是用另一封电子邮件创建凭据的。
我会检查您要为其检索元数据的文件是否是团队驱动器的一部分;如果是,则必须在请求中设置 supportsTeamDrives=True
。
就我而言,我只是没有授予我的服务帐户访问该文件夹的权限。只需通过网络界面分享即可解决问题。
要使用的电子邮件地址:
在此处检查您的服务帐户的电子邮件地址:
电子邮件地址将如下所示:
name-of-service-account@name-of-project.iam.gserviceaccount.com
如果您收到这样的回复:
<HttpError 404 when requesting https://www.googleapis.com/drive/v3/files/REDACTED_FILE_ID/copy?alt=json returned "File not found: REDACTED_FILE_ID.". Details: "[{'domain': 'global', 'reason': 'notFound', 'message': 'File not found: REDACTED_FILE_ID.', 'locationType': 'parameter', 'location': 'fileId'}]">
并且 fileId 指向共享驱动器上的文件,您需要在请求参数中包含 supportsSharedDrives=true。
Google 在他们的 Implement shared drive support 文章中提供了更多详细信息。
这是一个使用 Python 创建副本的小示例:
googledrive = build('drive', 'v3', credentials=creds)
copy_response = googledrive.files().copy(
fileId=TEMPLATE_SPREADSHEET_ID,
body={
"parents": [
report_folder_id,
],
'title': report_title
},
supportsAllDrives=True
).execute()
为了 运行,您需要将其混合到 Python Quickstart for Google Drive API 的示例代码中。
我遇到这个问题是因为我在使用 update
方法时遇到“找不到文件”错误。
我在 Python 中使用这一行来执行方法:
files_res.update(fileId=f_id, body={"name": f_name}).execute()
我可以列出 shared 文件及其父文件,但更新失败,无论此错误的范围如何:
...
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found: 1YqV...",
"locationType": "parameter",
"location": "fileId"
}
],
"code": 404,
...
我在方法中添加了 supportsAllDrives=True
参数并且它起作用了:
files_res.update(fileId=f_id, body={"name": f_name}, supportsAllDrives=True).execute()