【问题标题】:Where can I see shared users for a file using Google Drive API?在哪里可以查看使用 Google Drive API 的文件的共享用户?
【发布时间】:2020-12-01 16:43:54
【问题描述】:

我想使用 Google Drive API 来监控我们组织内的文档,并确保没有人不正当地共享文件。为此,我需要能够查看当前谁(或哪些组)可以访问云端硬盘中的文档。我认为 Drive API 非常适合这个,但是当我在 API 中查找文件时,信息完全没有帮助。

每个文件都有一个权限列表,但是当我请求此列表时,它并没有说明每个权限适用于谁。他们说角色(即“读者”、“所有者”等)和类型(即“用户”、“组”等),但 email_address 字段始终为空白。即使我是文件的所有者,或者权限适用于我。

我做错了吗?有什么方法可以查看文件权限适用于谁?还是我运气不好?

这是我正在使用的 PHP 代码的精简版:

/* getClient creates and returns a Google_Client */
$client = $this->getClient();
$service = new Google_Service_Drive($client);

/* I use the service to look at my files and get a file id */
$optParams = array(
    'pageSize' => 20,
    'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);
foreach ($results->getFiles() as $file) {
    $permissions = $service->permissions->listPermissions($file->getId());
    var_dump($permissions);
}

附: This answer 建议出于隐私原因忽略电子邮件地址(并且似乎暗示它们从不可见?)但它也在谈论 API 的 V2,所以我不知道如果适用。另外,我不明白为什么在浏览器中使用 Google Drive 时可以清楚地看到电子邮件地址,但出于隐私原因,它会隐藏这些电子邮件地址。

【问题讨论】:

  • 请编辑您的问题并包含您的代码。尝试使用 fields=* 参数提出您的请求。如果没有看到您的代码,我无法告诉您如何做到这一点。
  • 这正是我的问题,我完全忘记了 fields 参数。包括它,现在它可以工作了。谢谢。

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


【解决方案1】:

正如DalmTo 所指出的,我只需要在请求中指定我的字段即可。我所做的只是改变:

$permissions = $service->permissions->listPermissions($file->getId());

进入:

$optParams = array(
    'pageSize' => 20,
    'fields' => 'nextPageToken, permissions(id, emailAddress, role, type)'
);
$permissions = $service->permissions->listPermissions($file->getId(), $optParams);

现在我可以按预期看到电子邮件地址了。

【讨论】:

  • Drive v3 有一个缺点(IMO),默认情况下它不会返回您需要自己请求的所有字段。 fields parameter
猜你喜欢
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多