首页 > 解决方案 > 如何检查 Google Drive 文件是否与任何拥有 Google Drive API 文件链接的人共享?

问题描述

我正在编写一个 API 来检查 Google Drive 文件是否与任何拥有该链接的人共享。我有 Google Drive 文件的文件 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();
  }
}

我尝试通过检查权限对象的“类型”属性。但是我每次都将“用户”作为其价值。但是该文件已经共享给任何拥有该链接的人(使用 Google Drive 的权限 API,我可以看到它的内容)。我期待“任何人”作为“类型”属性的值。你能告诉我们你的想法吗?

标签: phpyiigoogle-apigoogle-drive-apigoogle-client

解决方案


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

使用permissions->list您只需发送 fileId,您将收到权限列表。然后迭代该列表并检查其中一个是否包含type: anyone(在您的情况下,您甚至可以检查id: anyoneWithLink)。

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


推荐阅读