Google 驱动器 API:很抱歉,您的计算机或网络可能正在发送自动查询

Google Drive API: we're sorry but your computer or network may be sending automated queries

我知道这个问题在去年被问过多次,但我似乎无法得到有效的答案。我正在尝试使用此 url:

从 Google 驱动器下载文件
https://www.googleapis.com/drive/v3/files/12BeD3I6JoRMfgeEJfZpZGEGew4Ncpw4i?alt=media&access_token=ya29.a0AfH6SMDyh3TTrbXZxSxQkuwj

(此处为简洁起见缩短了令牌)

响应为 403 禁止访问,解释为“很抱歉,您的计算机或网络可能正在发送自动查询。为了保护我们的用户,我们现在无法处理您的请求。”。

我们是经过验证的应用程序,访问文件列表和上传文件没有问题。我们确实打算以自动方式下载文件,但我在第一次尝试时就看到了这个错误。

我确实找到了关于此主题的另一个问题,解决方案是使用授权 header。这就是我们的 header 的样子:

Host: www.googleapis.com
User-Agent: comaxis-agent/1.0
Accept: */*
Content-Type: application/json
Authorization: bearer ya29.a0AfH6SMDyh3TTrbXZxSxQkuwj

(再次,令牌缩短)

这个不行,没有变化。有人可以帮忙吗?

修改点:

  • 从 2020 年 1 月开始,访问令牌不能与 access_token=### 等查询参数一起使用。 Ref 我认为这就是您遇到问题的原因。所以现阶段要求在请求头中使用access token。这在你的问题中已经提到了。

  • 关于您的以下请求

      Host: www.googleapis.com
      User-Agent: comaxis-agent/1.0
      Accept: */*
      Content-Type: application/json
      Authorization: bearer ya29.a0AfH6SMDyh3TTrbXZxSxQkuwj
    
    • https://www.googleapis.com/drive/v3/files/###?alt=media 是 GET 方法。在这种情况下,不需要 Content-Type。并且,请将bearer修改为Bearer

以上几点反映到curl命令后,就变成了下面的样子。

curl 命令示例:

curl \
  -H "Authorization: Bearer ###" \
  "https://www.googleapis.com/drive/v3/files/12BeD3I6JoRMfgeEJfZpZGEGew4Ncpw4i?alt=media"
  • 当该文件是二进制文件时,可能需要 -o filename 选项。

注:

  • 当您要下载Google Docs(Document、Spreadsheet、Slides等)文件时,请使用导出方式。 Ref

参考: