Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查Google Drive文件是否与任何使用Google Drive API链接到该文件的人共享?_Php_Yii_Google Api_Google Drive Api_Google Client - Fatal编程技术网

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

Php 如何检查Google Drive文件是否与任何使用Google Drive API链接到该文件的人共享?,php,yii,google-api,google-drive-api,google-client,Php,Yii,Google Api,Google Drive Api,Google Client,我正在编写一个API来检查Google驱动器文件是否与任何拥有该链接的人共享。我有谷歌驱动器文件的文件ID。我有一个代码片段来打印文件的权限 function printPermission($service, $fileId, $permissionId) { try { $permission = $service->permissions->get($fileId, $permissionId); print "Name: " . $permission-

我正在编写一个API来检查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'属性。但我每次都把“用户”作为它的值。但是这个文件已经被分享给任何拥有这个链接的人(通过谷歌驱动器的许可API,我可以看到它的内容)。我希望“anywhere”作为“type”属性的值。您能告诉我们您的想法吗。

您需要使用
权限->列表
,而不是
权限->获取
。使用
permissions->get
我猜您是在向用户发送permissionId

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


参考资料:

谢谢你@Rubén López。我的问题通过对资源权限使用“列表”API而不是“获取”来解决。