0

尝试使用 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 Drive UI 中的“共享链接”检索到的同一文件的有效链接:

https://docs.google.com/file/d/0B6Cpn8NXwgGPSE8zQW10XzJMc0k

我还检查了 api 控制台中的配额报告,我们的使用率为 0%。

有什么想法吗?

谢谢

4

3 回答 3

1

在 python quickstart之后我遇到了类似的错误。

事实证明我已经正确创建了一个 API 密钥等,但是错过了第 2 步:

  1. 在您的 API 项目中选择 Services 选项卡,然后启用 Drive API

在我跳过之前使用过 API 并错过了这个关键点。

于 2013-01-09T11:00:56.987 回答
0

两条错误消息都没有准确的信息。问题与权限有关。我使用 Google Picker 上传有问题的文件,但由于权限,这些文件不会自动提供给 API。我认为他们会根据文件。

我通过使用 Google Drive UI 为“公共”设置图像上传到的文件夹的权限解决了问题。现在我的应用程序有权访问上传的文件。

虽然在我的情况下将文件权限设置为“公共”是可以的,因为这些文件是公开的,但我知道这在所有情况下都是不可接受的。有人可以说明如何处理此问题....以便使用 Google Picker 上传的文件自动具有 API 访问权限,而无需将文件夹权限设置为“公共”?

于 2012-08-15T21:33:48.883 回答
0

这些消息是准确的。

在第一种情况下,由于您没有权限,Google 会给出未找到的文件。这是一种标准的安全措施,而不是通过确认文件存在来泄露信息。

在第二种情况下,您调用了没有身份验证标头的 API,因此 Google 将您视为未注册和未经授权的应用程序,这对于某些 Google API 是可以的,最多达到每日配额。对于云端硬盘,每日配额为零。

我同意这不直观,而且我敢肯定许多开发人员的年数都被浪费了(包括我的),但它是准确的。

要回答有关上传文件为何无法访问的问题,请检查您是否请求了正确的范围,并且在上传时使用了正确的客户端 ID 和 MIME 类型。

于 2013-08-30T15:34:10.330 回答