【问题标题】:Google Drive API does not return permissionIds when listing files列出文件时,Google Drive API 不返回 permissionIds
【发布时间】:2022-01-05 07:45:23
【问题描述】:

列出用户驱动器中的所有文件并获取与他人共享的文件列表的最简单尝试不是始终返回permissionIds 的列表。有时我明白,有时我不明白。

这是我在https://developers.google.com/drive/api/v3/reference/files/list 的 API 资源管理器中尝试的一个非常简单的查询

Request:

corpora=user
fields=files(id,permissionIds)

调试日志中看到的请求:https://www.googleapis.com/drive/v3/files?corpora=user&fields=files%28id%2CpermissionIds%29

Response(为简单起见,从输出中删除了额外的条目):

{
 "files": [
  {
   "id": "1Y_i8-TMfnhxhImlf2IsiJSO4aOqmAULz",
  }
}

一些文件没有设置permissionIds,但应该设置。

如果我使用 pageSize 参数,我会得到不同的文件集,这些文件集是否设置了属性。

例如,我什至尝试执行这个非常简单的查询:https://www.googleapis.com/drive/v3/files?includeItemsFromAllDrives=true&supportsAllDrives=true&corpora=user&fields=nextPageToken,files(id,permissionIds)&pageSize=1000,其中我尝试了 pageSize 的不同值,分别为 10、20、30、40、50、100 和 1000。下表显示了我的结果得到每个查询和permissionIds 的数量(当然我也酌情更新了pageToken

下表显示了结果及其permissionIds 的数量。例如,第 0 到第 39 个结果具有相同的permissionIds,但结果编号 40 具有 pageSize 10、20 和 40 的 28 个权限 ID,并且没有为 pageSize 设置 30、50、100 和 1000 的权限 ID。我验证了id 都是一样的。

即使对于pageSize=100,结果的第一页也丢失了,然后我将其填充为 100 到 120,然后从 120 开始再次丢失(这是 pageSize=100 的结果的第二页)。

[↓↓ files result index ↓↓] [⇉ pageSize ⇉] 10 20 30 40 50 100 1000
40 28 28 null 28 null null null
41 10 10 null 10 null null null
42 7 7 null 7 null null null
43 25 25 null 25 null null null
44 25 25 null 25 null null null
45 11 11 null 11 null null null
46 25 25 null 25 null null null
47 1 1 null 1 null null null
49 6 6 null 6 null null null
50 26 26 null 26 26 null null
51 26 26 null 26 26 null null
52 2 2 null 2 2 null null
53 25 25 null 25 25 null null
54 25 25 null 25 25 null null
55 26 26 null 26 26 null null
56 26 26 null 26 26 null null
57 25 25 null 25 25 null null
58 25 25 null 25 25 null null
63 30 30 30 30 30 null null
65 25 25 25 25 25 null null
67 25 25 25 25 25 null null
68 25 25 25 25 25 null null
69 26 26 26 26 26 null null
70 25 25 25 25 25 null null
71 3 3 3 3 3 null null
72 26 26 26 26 26 null null
73 25 25 25 25 25 null null
74 25 25 25 25 25 null null
75 26 26 26 26 26 null null
76 26 26 26 26 26 null null
77 25 25 25 25 25 null null
78 25 25 25 25 25 null null
79 26 26 26 26 26 null null
80 25 25 25 25 25 null null
81 1 1 1 1 1 null null
82 25 25 25 25 25 null null
83 26 26 26 26 26 null null
84 25 25 25 25 25 null null
85 25 25 25 25 25 null null
91 25 25 25 25 25 null null
92 26 26 26 26 26 null null
93 25 25 25 25 25 null null
100 25 25 null null 25 25 null
101 25 25 null null 25 25 null
102 25 25 null null 25 25 null
103 25 25 null null 25 25 null
104 26 26 null null 26 26 null
105 26 26 null null 26 26 null
106 25 25 null null 25 25 null
110 26 26 null null 26 26 null
111 25 25 null null 25 25 null
112 25 25 null null 25 25 null
114 25 25 null null 25 25 null
115 25 25 null null 25 25 null
116 25 25 null null 25 25 null
117 25 25 null null 25 25 null
120 25 25 25 25 null null null
121 25 25 25 25 null null null
122 25 25 25 25 null null null
123 25 25 25 25 null null null

我将接受一种合理可靠的方式来获取权限 ID,希望不必对每个文件都执行 get

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

    file.list 请求有一个名为 files 的可选参数,它将强制它返回所有响应数据。

    GET https://www.googleapis.com/drive/v3/files?fields=*&key=[YOUR_API_KEY] HTTP/1.1
    
    Authorization: Bearer [YOUR_ACCESS_TOKEN]
    Accept: application/json
    

    也就是说,您要取回的唯一权限是所有者权限。

    回复

     "owners": [
        {
         "kind": "drive#user",
         "displayName": "xxxxx",
         "photoLink": "https://..../AOh14GhkDDDZulUhea-c-7_eeZFaG8zpfx6QWKOnTHwYJE8=s64",
         "me": false,
         "permissionId": "13642264623635",
         "emailAddress": "xxxx@gmail.com"
        }
       ],
    

    要获得文件的权限,您应该执行 permissions.list 并传递文件 ID

    假设提出请求的用户是文件的所有者,他们将能够看到还有谁对该文件具有权限。

    GET https://www.googleapis.com/drive/v3/files/1x8-vD-XiXEEA5Spf3qp8x2wltablGF22Lpwup8VtxNY/permissions?key=[YOUR_API_KEY] HTTP/1.1
    
    Authorization: Bearer [YOUR_ACCESS_TOKEN]
    Accept: application/json
    

    【讨论】:

    • 但是我可以得到permissionIds,只要我在请求的q参数中进行搜索。
    • 其实你不需要我可以通过请求字段=*来获得permissionIds
    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多