【问题标题】:How to check if the Google Drive file is shared with anyone having the link to the file with Google Drive API?如何检查 Google Drive 文件是否与任何拥有 Google Drive API 文件链接的人共享?
【发布时间】:2018-08-24 12:25:44
【问题描述】:

我正在编写一个 API 来检查 Google 云端硬盘文件是否与拥有该链接的任何人共享。我有一个 Google Drive 文件的文件 ID。我有一个代码 sn -p 来打印文件的权限

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 Drive 的许可 API,我可以看到它的内容)。我期待“任何人”作为“类型”属性的值。能否请您告诉我们您的想法。

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 谢谢@Rubén López。我的问题通过使用 'list' API 而不是 'get' 权限资源得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多