我在哪里可以看到使用Google Drive API的文件的共享用户?

问题描述

我想使用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);
}

P.S。 This answer建议出于隐私原因而忽略电子邮件地址(并且似乎还暗示它们从不可见?),但这也是在谈论API的V2,所以我不这样做。不知道它是否适用。另外,当我在浏览器中使用Google云端硬盘时可以清楚地看到电子邮件地址时,出于隐私原因,我不知道为什么会隐藏这些电子邮件地址。

解决方法

正如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);

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...