使用 Google Drive API 更改通过帐户服务创建的文件的所有者
P粉680487967
P粉680487967 2024-01-06 11:03:37
0
1
499

我使用服务帐户将文件上传到 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粉680487967
P粉680487967

全部回复(1)
P粉571233520

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

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

相关

其他相关

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!