无法删除“我”权限

时间:2014-06-19 21:21:16

标签: php google-api google-drive-realtime-api google-drive-api

我在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

2 个答案:

答案 0 :(得分:0)

只有文件的所有者才能删除或删除它。如果您尝试对具有查看或编辑权限的用户执行此操作,您将获得拒绝权限。

答案 1 :(得分:0)

我通过大量的反复试验弄明白了。

您必须获得自我初始化的Google云端硬盘服务的权限。您可以使用get()方法从about属性获取此信息。我猜这是某种默认的全球帐户permissionId。所以在这种情况下,这是API帐户本身的permissionId。

$g_sd->permissions->delete($g_doc->id, $g_sd->about->get()->permissionId);

我希望这是有道理的,并拯救别人几个小时的挫折感。这些信息根本不在网上。相信我,我看了。