尝试使用Google Drive API获取文件时收到错误消息。使用Python,导致错误的行是:
file = service.files().get(fileId=googleDriveFileId).execute()
错误消息是:
HttpError: <HttpError 404 when requesting
https://www.googleapis.com/drive/v2/files/0B6Cpn8NXwgGPSE8zQW10XzJMc0k?alt=json returned
"File not found: 0B6Cpn8NXwgGPSE8zQW10XzJMc0k">
基本上说“找不到档案”
但是,如果我将请求的URL放入浏览器,我会收到不同的错误消息:
https://www.googleapis.com/drive/v2/files/0B6Cpn8NXwgGPSE8zQW10XzJMc0k
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit Exceeded. Please sign up",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit Exceeded. Please sign up"
}
}
这些错误消息对我来说都不正确。我知道文件在那里。以下是从Google云端硬盘用户界面中的“共享链接”中检索到的同一文件的工作链接:
https://docs.google.com/file/d/0B6Cpn8NXwgGPSE8zQW10XzJMc0k
我还检查了api控制台中的配额报告,我们的使用率为0%。
这里有什么想法?
由于
答案 0 :(得分:1)
我在the python quickstart之后遇到了类似的错误。
事实证明我已经正确创建了一个API密钥等,但错过了第2步:
- 选择API项目中的“服务”标签,然后启用Drive API 。
醇>
在我跳过之前使用了API并错过了这个关键点。
答案 1 :(得分:0)
这两条错误消息都没有准确的信息。问题与权限有关。我使用Google Picker上传有问题的文件,但由于权限问题,这些文件无法自动提供给API。我认为他们会根据文件。
我通过使用Google云端硬盘UI设置图片上传到“公共”的文件夹的权限来解决问题。现在我的应用程序有权访问上传的文件。
虽然在我的情况下将文件权限设置为“公共”是正常的,因为这些文件是公开的,但我知道这在所有情况下都是不可接受的。有人可以说明如何处理这个问题....所以,使用Google Picker上传的文件自动拥有API访问的权限,而无需将文件夹权限设置为“公共”?
答案 2 :(得分:0)
消息准确无误。
在第一种情况下,由于您没有权限,Google会提供找不到的文件。这是一种标准的安全措施,而不是通过确认文件存在来泄漏信息。
在第二种情况下,您在没有身份验证标头的情况下调用了API,因此Google会将您视为未注册且未经授权的应用,对于某些Google API而言,该应用最多可达到每日配额。在Drive的情况下,每日配额为零。
我同意这不直观,而且我确信许多开发人员已被浪费(包括我的),但这是准确的。
要回答有关上传文件无法访问的原因的问题,请检查您是否已请求正确的范围,以及在上传时是否使用了正确的客户端ID和mime类型。