首页  >  问答  >  正文

使用 Google Drive API 更改通过帐户服务创建的文件的所有者

我使用服务帐户将文件上传到 Google 云端硬盘中的共享文件夹。

一段时间后,我发现服务帐户拥有的文件消耗了服务帐户的驱动器存储(我的错),现在我已经用完了服务帐户的驱动器空间。

我已经将域范围的权限委托给服务帐户,因此新文件将归我所有并使用我的个人存储配额。

这样做:将域范围的权限委派给服务帐户

以及如何通过 google/apiclient 从 PHP 使用 Google Drive API 的 API 密钥

为了避免将来出现错误和混乱,我想更改旧文件的所有者。我不断收到此错误:

{ "error": { 
    "code": 400, 
    "message": "Bad Request. User message: "You can't change the owner of this item."", 
    "errors": [ {
       "message": "Bad Request. User message: "You can't change the owner of this item."", 
       "domain": "global", 
       "reason": "invalidSharingRequest" 
    } ] 
  } 
}

这是我使用 PHP 客户端的代码

$client = new Google_Client();
$client->setApplicationName('My Name');
$client->setScopes(Google_Service_Drive::DRIVE);
$client->setAuthConfig($my_credentials);
$client->setAccessType('offline');
//$client->setSubject('my_personal_account');

$service = new Google_Service_Drive($client);

$newPermission = new Google_Service_Drive_Permission();
$newPermission->setEmailAddress('my_personal_account');
$newPermission->setType('user');
$newPermission->setRole('owner');

$service->permissions->create(
  $fileId, 
  $newPermission, 
  array("fields" => "id", "transferOwnership" => true)
);

无论客户端中是否使用 setSubject,我都会遇到相同的错误。我尝试过使用

$newPermission->setRole('writer');
$newPermission->setPendingOwner(true);

但是没有成功。

P粉680487967P粉680487967310 天前535

全部回复(1)我来回复

  • P粉571233520

    P粉5712335202024-01-07 00:10:19

    只能在同一域的帐户之间转移文件所有权。出现此错误的原因是服务帐户和您的帐户不属于同一域。

    如果您有权访问共享云端硬盘并且能够添加具有添加文件权限的用户,请添加服务帐户并使其将文件移至共享云端硬盘。

    相关

    其他相关

    回复
    0
  • 取消回复