我正在向Google api库发出请求,并尝试下载一些报告以自动下载并导入到我们的系统。但是我遇到了问题。 我得到的错误代码:
Google \ Cloud \ Core \ Exception \ ServiceException:{“错误”:{“错误”:[{“域”:“全局”,“原因”:“禁止”,“消息”:“ service-worker @ service-worker.iam.gserviceaccount.com没有对pubsite_prod_rev_的storage.objects.list访问权限。” }],“代码”:403,“消息”:“ service-worker@service-worker.iam.gserviceaccount.com没有对pubsite_prod_rev_的storage.objects.list访问权限。” }}在263行的D:\ USER \ Web \ Directory \ tools \ vendor \ google \ cloud \ Core \ src \ RequestWrapper.php中
我尝试将权限添加到我要访问的pubsite_prod_dev目录中,但是,即使我是管理员,也遇到了另一个错误:
您无权查看此存储分区的元数据。请与存储桶所有者联系,以授予您“ storage.buckets.get”和“ storage.buckets.getIamPolicy”权限。
我了解gsutil工具,并成功使用了它,问题是我不能在我们的工具服务器中使用它,因为托管服务提供商拒绝了我们使用此软件(使用托管托管)。因此,我坚持尝试使API库正常工作。 有什么好的解决方案吗?我已经尝试过在github中找到的各种库和代码,但是似乎没有任何效果,或者已经过时,并且不建议使用这些库。 .. 我的代码:
<?php
require 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
$client = new StorageClient([
'scopes' => [StorageClient::READ_ONLY_SCOPE],
'keyFile' => json_decode(file_get_contents('./client_secret.json'), true)
]);
$bucket = $client->bucket('pubsite_prod_rev_<code>');
foreach ($bucket->objects(['prefix' => 'sales/']) as $object) {
print_r($object->name());
}
$file = $bucket->object('salesreport_201809.zip');
$file->downloadToFile();
答案 0 :(得分:0)
这个答案也许来晚了。我遇到了同样的问题,并想起了google文档中的一个句子,该句子表明在Google Play控制台中有权访问报告的用户也可以访问存储这些报告的存储桶。
因此,诀窍是将服务帐户电子邮件(您创建该帐户以使用StorageClient访问云API)添加到Google Play控制台内的用户。