Google Drive API-存储在GSuite共享驱动器中的文件(仅)出现404错误

问题描述 投票:1回答:1

我的应用程序具有作用域drive.file,drive.readonly和drive.metadata.readonly。使用https://github.com/googleapis/google-api-php-client v2.2.2

[通过Google云端硬盘用户身份验证时,它可以很好地提取文件,但仅当这些文件由另一个用户(或同一用户)拥有时才可以。

[存储在共享驱动器上的文件(G Suite商业功能)并与用户共享会导致404错误:

 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "File not found: 1gasqkgWcabla8sksT5FUtZGzlfIwGbc_aI4g2gl9bla.",
    "locationType": "parameter",
    "location": "fileId"
   }
  ],
  "code": 404,
  "message": "File not found: 1gasqkgWcabla8sksT5FUtZGzlfIwGbc_aI4g2gl9bla."
 }

我已经验证该文件确实可以通过驱动器/文档等由该用户读取。

我已经进入API控制台,并在Drive UI集成下选中了“ Shared Drives support”-这没有什么区别。添加更大的“驱动器”范围也无济于事。

google-drive-api
1个回答
1
投票

经过测试,我发现了相同的问题。

[当我尝试通过以下HTTP请求从共享驱动器获取文件时

GET /drive/v3/files/<ID-file> HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer <access Token>

我和您遇到的错误相同:

{
  "error": {
    "code": 404, 
    "message": "File not found: 1DIM-vS4058e0X5eutNmOqSr3z0rA1Nqh.", 
    "errors": [
      {
        "locationType": "parameter", 
        "domain": "global", 
        "message": "File not found: 1DIM-vS4058e0X5eutNmOqSr3z0rA1Nqh.", 
        "reason": "notFound", 
        "location": "fileId"
      }
    ]
  }
}

但是在阅读the documentation 时,很明显您需要在HTTP请求中包括supportsAllDrives参数。

所以现在添加supportsAllDrives=true我的请求如下:

GET /drive/v3/files/<File ID>?supportsAllDrives=true HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer <access Token>>

然后我必须在响应中检索文件:

{
  "mimeType": "image/jpeg", 
  "kind": "drive#file", 
  "name": "file.jpg", 
  "driveId": "<Drive Id>", 
  "teamDriveId": "<Team Drive ID>", 
  "id": "<File ID>"
}
© www.soinside.com 2019 - 2024. All rights reserved.