如何删除文件夹驱动器 api
How to delete folder drive api
我无法删除文件夹(由其他人创建)即使我尝试更改权限,我有一个控制台应用程序并且当前经过身份验证的用户可以执行以下 :
- 创建folders/files
- 移动文件
范围:
'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.Set 当前用户的权限
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] {
"error": {
"errors": [
{
"domain": "global",
"reason": "internalError",
"message": "Internal Error"
}
],
"code": 500,
"message": "Internal Error" } }
2.Set 权限 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]
{
"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:冒充创作者
$this->googleClient->setAccessType('offline');
$this->googleClient->setSubject('x@domain.com');//if removed everything works
[GuzzleHttp\Exception\ClientException]
Client error: POST https://www.googleapis.com/oauth2/v4/token
resulted in a 401 Unauthorized
response:
{
"error": "unauthorized_client",
"error_description": "Unauthorized client or scope in request.",
"error_uri": ""
}
我是不是漏掉了什么?
只有文件夹的所有者才能删除文件夹。
使用服务帐户 Using OAuth 2.0 for Server to Server Applications, take the identity of the owner of the folder Perform Google Apps Domain-Wide Delegation of Authority.
一旦授权为文件夹的所有者,就可以删除该文件夹。
我无法删除文件夹(由其他人创建)即使我尝试更改权限,我有一个控制台应用程序并且当前经过身份验证的用户可以执行以下 :
- 创建folders/files
- 移动文件
范围:
'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.Set 当前用户的权限
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] {
"error": {
"errors": [
{
"domain": "global",
"reason": "internalError",
"message": "Internal Error"
}
],
"code": 500,
"message": "Internal Error" } }
2.Set 权限 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]
{
"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:冒充创作者
$this->googleClient->setAccessType('offline');
$this->googleClient->setSubject('x@domain.com');//if removed everything works
[GuzzleHttp\Exception\ClientException]
Client error:POST https://www.googleapis.com/oauth2/v4/token
resulted in a401 Unauthorized
response:
{
"error": "unauthorized_client",
"error_description": "Unauthorized client or scope in request.",
"error_uri": ""
}
我是不是漏掉了什么?
只有文件夹的所有者才能删除文件夹。 使用服务帐户 Using OAuth 2.0 for Server to Server Applications, take the identity of the owner of the folder Perform Google Apps Domain-Wide Delegation of Authority.
一旦授权为文件夹的所有者,就可以删除该文件夹。