如何检查是否使用与Google Drive API链接的文件的任何人共享Google Drive文件?

时间:2018-08-24 12:25:44

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

我正在编写一个API,以检查是否与具有链接的任何人共享Google云端硬盘文件。我有Google云端硬盘文件的文件ID。我有一个代码段来打印文件的权限

function printPermission($service, $fileId, $permissionId) {
  try {
    $permission = $service->permissions->get($fileId, $permissionId);

    print "Name: " . $permission->getName();
    print "Role: " . $permission->getRole();
    $additionalRoles = $permission->getAdditionalRoles();
    if(!empty($additionalRoles)) {
      foreach($additionalRoles as $additionalRole) {
        print "Additional role: " . $additionalRole;
      }
    }
  } catch (Exception $e) {
    print "An error occurred: " . $e->getMessage();
  }
}

我尝试通过检查权限对象的'type'属性。但是我每次都会得到“用户”作为其价值。但是该文件已经被共享给任何具有链接的人(使用Google云端硬盘的权限API,我可以看到其内容)。我期望“任何人”都是“类型”属性的值。您能告诉我们您的想法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用permissions->list而不是permissions->get。我猜您使用permissions->get从用户发送了一个PermissionId。

使用permissions->list,您只需要发送fileId,您将收到权限列表。然后,对该列表进行迭代,并检查其中是否包含type: anyone(对于您而言,您甚至可以检查id: anyoneWithLink)。

参考:https://developers.google.com/drive/api/v3/reference/permissions/list