автоматизация загрузки отчета о продажах в магазине приложений Google - PullRequest
0 голосов
/ 06 сентября 2018

Я делаю запрос в библиотеке 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();

1 Ответ

0 голосов
/ 07 февраля 2019

Этот ответ может быть поздно. У меня возникла та же проблема, и я вспомнил предложение где-то в документах Google, в котором говорилось, что пользователи, имеющие разрешения на отчеты в консоли Google Play, также имеют доступ к корзине, в которой хранятся эти отчеты.

Таким образом, хитрость заключается в добавлении электронной почты учетной записи службы (которую вы создали, чтобы получить доступ к облачному API с помощью StorageClient) пользователям в консоли Google Play.

...