【问题标题】:Google drive API - list files with its permissionsGoogle drive API - 列出文件及其权限
【发布时间】:2021-05-20 11:26:41
【问题描述】:

我想通过这个 API 列出文件及其权限 https://developers.google.com/drive/api/v3/reference/files/list

当我将字段设置为 * 或显式设置时

  • 文件(id,name,description,mimeType,parents,trashed, permissions/*))
  • 文件(id,name,description,mimeType,parents,trashed, permissions(*))
  • 文件(id、名称、描述、mimeType、父母、已删除、权限/电子邮件地址)

我永远不会获得权限。

我得到了这个:

{
   "id": "abc123"
   "name": "Name of file",
   "mimeType": "application/vnd.google-apps.folder",
   "trashed": false,
   "parents": [
      "abc1234"
   ]
}

另外,我注意到 API 不返回 NULL 值(描述),但是当我通过 https://developers.google.com/drive/api/v3/reference/permissions/get 获取它时权限不是 NULL。

这是我在“试用此 API”中所说的内容。

curl \
  'https://www.googleapis.com/drive/v3/files?supportsAllDrives=true&fields=files(id%2Cname%2Cdescription%2CmimeType%2Cparents%2Ctrashed%2Cpermissions)&key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --compressed

有谁知道怎么回事?

【问题讨论】:

  • 如果您使用 PHP 执行此操作,则应包含您的代码。

标签: php google-api permissions google-drive-api


【解决方案1】:

获取所有权限

files(id,name,description,mimeType,parents,trashed,permissions)

返回。

 {
   "id": "1nsFyMDBDkeuLYx0oDIk9vQFOMH4Vc98ndxIG4Giq6Y",
   "name": "Copy of How to create an credentails.json",
   "mimeType": "application/vnd.google-apps.presentation",
   "trashed": false,
   "parents": [
    "1dIyzPuh2XFVdlhJa4wSzNTlyCRguypI"
   ],
   "permissions": [
    {
     "kind": "drive#permission",
     "id": "0603058822553437243",
     "type": "user",
     "emailAddress": "me@gmail.com",
     "role": "owner",
     "displayName": "Linda Lawton",
     "photoLink": "https://lh3.googleusercontent.com/a-/AOh14GhroCYJp2P9xYeYk1npchBPK-zbtTxzNQo0WAHI20=s64",
     "deleted": false
    }
   ]
  },

只需获得电子邮件许可

files(id,name,description,mimeType,parents,trashed,permissions(emailAddress))

返回

 {
   "id": "1igmEhcgLrVFyneIcwFTetsFe-eDwKDsRqTmMwHaibs",
   "name": "Copy of Copy of How to create an api key",
   "mimeType": "application/vnd.google-apps.presentation",
   "trashed": false,
   "parents": [
    "1yqppb5v5jSzCqnQaO8svooJh3C9nH3G"
   ],
   "permissions": [
    {
     "emailAddress": "me@gmail.com"
    }
   ]
  },

这对我来说似乎很好。

【讨论】:

  • 对我来说不是。你在使用任何图书馆吗? PHP?
  • 由于您没有包含任何代码并且似乎是直接进行调用,因此我在 try me 部分对此进行了测试。这不是 api 按预期工作的问题。
  • 我在主帖中添加了屏幕截图和 CURL。我正在使用 PHP 库进行尝试,也直接在“试用此 API”中进行尝试。他们没有一个像你提到的那样工作。
  • 我的代码也来自 try me。它工作正常。你确定你已经授权了正确的范围吗?
  • @MakoBuk 您是否可能处于访问受限的域中?
【解决方案2】:

文件(id、名称、md5Checksum、大小、父母、mimeType、webContentLink、permissionIds)

在返回的数据之间添加“permissionIds”,您将收到一个包含所有权限id的数组,如果文件与“任何人”共享返回的id是“anyoneWithLink”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多