Google 存储 - 动态更改单个对象的 ACL (PHP)

Google Storage - dynamically change ACL on single object (PHP)

我基本上需要通过添加或删除 allUsers 实体来更新 ACL。

我有 PHP 库,我现在正在做的是:

$storage = new StorageClient([
    'projectId' => "xxxxx",
    'keyFilePath' => mykey, 
]);
$bucket = $storage->bucket('mybucket');
$acl = $bucket->acl('objectAccessControls', 'path/file/on/bucket');
if(add){
  $acl->add('allUsers', 'READER');
}else{
  $acl->delete('allUsers');
}

使用此代码实际上更改了所有存储桶配置,而不仅仅是文件。

如何正确指定特定文件的路径并仅更改 path/file/on/bucket 上的权限?我使用了错误的功能?

这是我正在使用的文档 https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.90.0/storage/acl

这种情况如果加上:

这是其他情况:

更新 1: 使用这个删除似乎有效 -> https://cloud.google.com/storage/docs/json_api/v1/objectAccessControls/delete

试图将此处列出的参数包含到我所做的调用中,如下所示:

$options = ['object' => 'path/obj'];
$acl->delete('allUsers', $options)

还是不行

其实我已经用Google_Service

解决了
  $client = new Google_Client();
  $client->setApplicationName('GoogleBuck/0.1');
  $client->useApplicationDefaultCredentials(); // app engine env
  $client->addScope('https://www.googleapis.com/auth/devstorage.full_control'); 
  $storage = new Google_Service_Storage($client);
  $acl = new Google_Service_Storage_ObjectAccessControl($client);
  $acl->setEntity('allUsers');
  $acl->setRole('READER');
  $acl->setBucket($bucketName);
  $acl->setObject($objectName);

添加

$response = $storage->objectAccessControls->insert($bucketName, $objectName, $acl);

删除

$response = $storage->objectAccessControls->delete($bucketName, $objectName, 'allUsers');