我们的应用程序在尝试从 Google Picker 下载所选文件时遇到 Google Drive 错误。
我们有两个应用程序,一个用于生产环境,一个用于开发环境,该应用程序在 Google Developer Console 上处于测试模式(未经验证)。
两个应用程序具有相同的范围:
.../auth/userinfo.email
.../auth/userinfo.profile
.../auth/drive.file app
.../auth/drive.install
以及相同的配置,尽管在不同的服务器上(或者至少我们相信如此)。
在测试环境中一切正常,而在生产环境中却出现错误。
我们使用生产应用程序凭据和测试凭据进行本地测试(在开发计算机上),并且能够复制错误,并将其追溯到对 Drive 的调用。
在本地,通过测试凭据,我们得到以下结果:
curl -H "[AUTH_TOKEN]" https://www.googleapis.com/drive/v3/files/19MO3I3AWVmgj75DHzhm-O-j12dS8lZC_xxxxxxxxxxx
RESPONSE:
{
"kind": "drive#file",
"id": "19MO3I3AWVmgj75DHzhm-O-j12dS8lZC_xxxxxxxxxxx",
"name": "recount jobs -",
"mimeType": "application/vnd.google-apps.document"
}
仍然在本地,但有了生产凭证,我们得到了这个结果:
curl -H "[AUTH_TOKEN]" https://www.googleapis.com/drive/v3/files/19MO3I3AWVmgj75DHzhm-O-j12dS8lZC_xxxxxxxxxxx
{
"error": {
"code": 404,
"message": "File not found: 19MO3I3AWVmgj75DHzhm-O-j12dS8lZC_xxxxxxxxxxx.",
"errors": [
{
"message": "File not found: 19MO3I3AWVmgj75DHzhm-O-j12dS8lZC_xxxxxxxxxxx.",
"domain": "global",
"reason": "notFound",
"location": "fileId",
"locationType": "parameter"
}
]
}
}
注意:并非所有文件都有此问题。此外,如果通过 Google 云端硬盘中的“打开方式”打开出现故障的文件,则一切正常。
是否有一些我们忽略的配置问题?
为我解决问题的是设置
appId
,如这个问题的答案之一所述。
就我而言,我将
appId
留空,因为我正在使用的反应驱动器选择器库在文档中没有提及任何有关 appId
的内容。
问题是选择器不会抱怨,让用户选择文件并在回调中返回元数据,但是当用户尝试下载文件时,会返回未找到错误。