如何删除文件夹驱动器api



我无法删除文件夹(由另一个人创建),即使我尝试更改权限,我有一个控制台应用程序,当前经过身份验证的用户可以执行以下操作:

  1. 创建文件夹/文件
  2. 移动文件

范围:

'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 ] {
"错误":{
"错误"(
:{
"域":"全球",
"原因":"internalError",
"message": "内部错误"
}
),
"代码":500年,
"message": "Internal Error"}}

2。设置权限类型任何人

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]
{
"error": {

"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:Impersonate创建者

$this->googleClient->setAccessType('offline');
$this->googleClient->setSubject('x@domain.com');//if removed everything works 

[GuzzleHttp 例外 ClientException]
客户端错误:POST https://www.googleapis.com/oauth2/v4/token导致401 Unauthorized响应:
{
"错误":"unauthorized_client",
"error_description": "请求中未授权的客户端或作用域。",
"error_uri":"
}

我错过了什么吗?

只有文件夹的所有者可以删除该文件夹。使用服务帐户使用服务器到服务器应用程序的OAuth 2.0,获取文件夹所有者的身份执行Google Apps域范围的权限授权。

一旦被授权为文件夹的所有者,就应该可以删除文件夹。

相关内容

最新更新