Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google drive api Google驱动器API-存储在GSuite共享驱动器中的文件(仅限)出现404错误_Google Drive Api - Fatal编程技术网

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

Google drive api Google驱动器API-存储在GSuite共享驱动器中的文件(仅限)出现404错误,google-drive-api,Google Drive Api,我的应用程序的作用域为drive.file、drive.readonly和drive.metadata.readonly。 使用v2.2.2 当作为Google Drive用户进行身份验证时,它可以很好地抓取文件,但只有当这些文件由另一个用户(或同一用户)拥有时,它才能工作 存储在共享驱动器(G套件业务功能)上并与用户共享的文件会导致404错误: "error": { "errors": [ { "domain": "global", "reason": "notFo

我的应用程序的作用域为drive.file、drive.readonly和drive.metadata.readonly。 使用v2.2.2

当作为Google Drive用户进行身份验证时,它可以很好地抓取文件,但只有当这些文件由另一个用户(或同一用户)拥有时,它才能工作

存储在共享驱动器(G套件业务功能)上并与用户共享的文件会导致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控制台并检查了驱动器UI集成下的“共享驱动器支持”-这没有什么区别。
这也无助于增加更大的“驱动器”范围。

测试后,我发现了同样的问题

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

GET /drive/v3/files/<ID-file> HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer <access Token>
但是阅读后,很明显,您需要将
supportsAllDrives
参数包含到HTTP请求中

因此,现在添加
supportsAllDrives=true
我的请求如下:

GET /drive/v3/files/<File ID>?supportsAllDrives=true HTTP/1.1
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer <access Token>>
GET/drive/v3/files/?supportsAllDrives=true HTTP/1.1
主持人:www.googleapis.com
内容长度:0
授权:持票人>
然后我在响应中检索文件:

{
  "mimeType": "image/jpeg", 
  "kind": "drive#file", 
  "name": "file.jpg", 
  "driveId": "<Drive Id>", 
  "teamDriveId": "<Team Drive ID>", 
  "id": "<File ID>"
}
{
“mimeType”:“图像/jpeg”,
“种类”:“驱动器#文件”,
“名称”:“file.jpg”,
“driveId”:“,
“teamDriveId”:“,
“id”:”
}

我刚刚试过,对我来说效果很好,可能是分享的问题。你是如何分享的。尝试访问drive.google.com/file/d/1gasqkgWcabla8sksT5FUtZGzlfIwGbc_aI4g2gl9bla页面。使用您已共享给的帐户。还要确保您使用的ID是正确的。从你的ID不应该有一个点(“.”)。我已经确定,用户帐户可以打开有问题的文件。点只是错误消息的结尾,实际使用的ID没有点。该代码和流程适用于许多用户,直到有人注意到他们只能从个人驱动器打开文件。我现在复制并确认了这个问题,它似乎是特定于共享驱动器的。这确实是个问题。我注意到,在2020年6月1日之后,这是不必要的。但是,我发现PHP库也需要更新,如中所述,否则它在添加到文件->get()调用时无法识别参数。
{
  "mimeType": "image/jpeg", 
  "kind": "drive#file", 
  "name": "file.jpg", 
  "driveId": "<Drive Id>", 
  "teamDriveId": "<Team Drive ID>", 
  "id": "<File ID>"
}