Я делаю запрос в библиотеке API Google и пытаюсь загрузить какой-нибудь отчет, чтобы автоматизировать загрузку и импорт в нашу систему. Однако я сталкиваюсь с проблемами.
Код ошибки, который я получаю:
Google \ Cloud \ Core \ Exception \ ServiceException: {"error": {"errors": [{"domain": "global", "reason": "запрещено", "message": "service-worker @ service-worker.iam.gserviceaccount.com не имеет доступа storage.objects.list к pubsite_prod_rev_. " }], "code": 403, "message": "service-worker@service-worker.iam.gserviceaccount.com не имеет доступа storage.objects.list к pubsite_prod_rev_." }} в D: \ USER \ Web \ Directory \ tools \ vendor \ google \ cloud \ Core \ src \ RequestWrapper.php в строке 263
Я пытался добавить permisions в каталог 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();