我在PHP中使用Google API。如果我与其他帐户的API共享文档,则无法使用API删除,删除或删除共享文件。
$g_sd = $this->g_client->getGoogleServiceDrive();
$g_doc = $g_sd->files->get($doc_id);
if($g_doc->sharedWithMeDate)
{
$g_sd->permissions->delete($g_doc->id, 'me');
}
因此,在这种情况下,$doc_id
来自我使用API电子邮件从其他帐户共享的文档。
我一直收到这个错误:
Error calling DELETE https://www.googleapis.com/drive/v2/files/1gQNCLBLY_rMFzH45Dnpo-Le-L-WGoDEz-Tv7JNLWy60/permissions/me: (404) Permission not found: me
权限存在,因为我可以在执行此操作时转储权限对象:
$permission = $g_sd->permissions->get($g_doc->id, 'me');
print_r($permission, true);
这是输出:
Google_Service_Drive_Permission Object ( [additionalRoles] => [authKey] => [domain] => [emailAddress] => [etag] => "AkM7BvofPa_Jxo7Kxgh76A7i7OE/lJV6AGH_OKQMZemIyVS-vZkisU0" [id] => me [kind] => drive#permission [name] => [photoLink] => [role] => writer [selfLink] => https://www.googleapis.com/drive/v2/files/1gQNCLBLY_rMFzH45Dnpo-Le-L-WGoDEz-Tv7JNLWy60/permissions/me [type] => user [value] => [withLink] => [collection_key:protected] => items [modelData:protected] => Array ( ) [processed:protected] => Array ( ) )
我也尝试过:
$g_sd->files->trash($g_doc->id);
和
$g_sd->files->delete($g_doc->id);
我刚收到此错误:
Error calling POST https://www.googleapis.com/drive/v2/files/1gQNCLBLY_rMFzH45Dnpo-Le-L-WGoDEz-Tv7JNLWy60/trash: (403) Insufficient permissions for this file
答案 0 :(得分:0)
只有文件的所有者才能删除或删除它。如果您尝试对具有查看或编辑权限的用户执行此操作,您将获得拒绝权限。
答案 1 :(得分:0)
我通过大量的反复试验弄明白了。
您必须获得自我初始化的Google云端硬盘服务的权限。您可以使用get()方法从about属性获取此信息。我猜这是某种默认的全球帐户permissionId。所以在这种情况下,这是API帐户本身的permissionId。
$g_sd->permissions->delete($g_doc->id, $g_sd->about->get()->permissionId);
我希望这是有道理的,并拯救别人几个小时的挫折感。这些信息根本不在网上。相信我,我看了。