【发布时间】:2016-11-02 09:52:22
【问题描述】:
即使我尝试更改权限,我也无法删除文件夹(由其他人创建),我有一个控制台应用程序,并且当前经过身份验证的用户可以执行以下操作:
- 创建文件夹/文件
- 移动文件
范围:
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/drive.appdata',
'https://spreadsheets.google.com/feeds',
尝试:
1.给当前用户设置权限
public function deleteFolder(\Google_Service_Drive_DriveFile $folder)
{
$permission = new \Google_Service_Drive_Permission();
$permission->setRole( 'owner' );
$permission->setType( 'user' );
$permission->setEmailAddress('someId@developer.gserviceaccount.com');
$permission = $this->googleDriveClient->permissions->create( $folder->getId(),$permission,array('transferOwnership'=>true));
$this->googleDriveClient->files->delete($folder->getId());
}
结果:
[Google_Service_Exception] {
“错误”:{
“错误”:[
{
“域”:“全球”,
“原因”:“内部错误”,
“消息”:“内部错误”
}
],
“代码”:500,
“消息”:“内部错误”} }
2.将type权限设置为anyone
public function deleteFolder(\Google_Service_Drive_DriveFile $folder) { $permission = new \Google_Service_Drive_Permission(); $permission->setRole( 'owner' ); $permission->setType( 'anyone' ); $permission = $this->googleDriveClient->permissions->create( $folder->getId(),$permission,array('transferOwnership'=>true)); $this->googleDriveClient->files->delete($folder->getId()); }
结果:
[Google_Service_Exception]
{
“错误”:{"errors": [ { "domain": "global", "reason": "insufficientFilePermissions", "message": "The user does not have sufficient permissions for this file ." } ], "code": 403, "message": "The user does not have sufficient permissions for this file." }}
尝试 3:冒充创作者
$this->googleClient->setAccessType('offline');
$this->googleClient->setSubject('x@domain.com');//if removed everything works
[GuzzleHttp\Exception\ClientException]
客户端错误:POST https://www.googleapis.com/oauth2/v4/token导致401 Unauthorized回复:
{
“错误”:“未授权客户端”,
"error_description": "请求中未经授权的客户端或范围。",
“error_uri”:“”
}
我错过了什么吗?
【问题讨论】:
-
文件夹里有东西吗?您是否删除了其他人的权限?我会坚持你的第一个版本,它看起来很接近。注意驱动器权限很痛苦。
-
文件夹是空的,我只是想添加一个权限来摆脱它。痛点很明显
-
想法:创建后做一个权限列表,看看它创建了什么。如果您拥有所有者权限后还有其他人,请删除它们。然后再次列出以确保它确实做到了。然后删除文件夹。 (像拔牙一样痛)
-
嘿,你解决了 2 吗?我在我的应用程序中遇到了这个问题(
-
@aleXela 对不起,我不能,您可以将它们移动到临时目录并不时删除项目。我从事的项目被推迟了,所以我没有进一步调查......
标签: php permissions google-drive-api google-api-php-client