我在做与谷歌API库的请求,并尝试下载一些报告来自动下载并导入到我们的系统。但是我遇到的问题。错误代码我得到:
谷歌\云\核心\异常\ ServiceException:{ “错误”:{ “错误”:[{ “域”: “全局”, “原因”: “禁止”, “消息”:“服务工作者@服务工作者.iam.gserviceaccount.com没有storage.objects.list访问pubsite_prod_rev_“。 }], “代码”:403, “消息”: “[email protected]不必pubsite_prod_rev_ storage.objects.list访问”。 }}在d:\ USER \网络\目录\工具\供应商\谷歌\云\核心的\ src \ RequestWrapper.php上线263
我已经尝试添加权限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();
这个答案也许说到晚。我有同样的问题,并在谷歌文档somwhere想起一句话,说明谁有权给谷歌内部报告的用户播放控制台还可以访问到这些报告存储桶。
因此,关键是要增加的服务帐户的电子邮件(您创建的访问与StorageClient云API),以谷歌内部的用户游戏控制台。