0

У меня возникли проблемы с использованием отчетов Google Cloud Storage и Google Play. Я хотел бы анализировать отчеты на моем сервере в PHP. Для этого я хотел бы переместить файл в корзину приложения по умолчанию на новый. Когда я пытаюсь сделать это, я получаю следующее сообщение об ошибке:Копирование отчета о воспроизведении в личном хранилище Google Cloud Storage

Fatal error: Uncaught exception 'Google_Service_Exception' with message '{ "error": { "errors": [ { "domain": "global", "reason": "notFound", "message": "Not Found" } ], "code": 404, "message": "Not Found" } } ' in /var/www/d2/libs/googleAPI/src/Google/Http/REST.php:118 Stack trace: #0 /var/www/d2/libs/googleAPI/src/Google/Http/REST.php(94): Google_Http_REST::decodeHttpResponse(Object(GuzzleHttp\Psr7\Response), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #1 [internal function]: Google_Http_REST::doExecute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...') #2 /var/www/d2/libs/googleAPI/src/Google/Task/Runner.php(181): call_user_func_array(Array, Array) #3 /var/www/d2/libs/googleAPI/src/Google/Http/REST.php(58): Google_Task_Runner->run() #4 /var/www/d2/libs/googleAPI/src/Google/Client.php(781): Google_Http_REST::execute(Object(GuzzleHttp\Client), Object(GuzzleHttp\Psr7\Request), 'Google_Service_...', Array) #5 /var/www/d2/libs/googleAPI/src/Google/Service in /var/www/d2/libs/googleAPI/src/Google/Http/REST.php on line 118 

Я не знаю, почему, потому что ведро назначения существует, происхождение файл тоже.

Это моя реализация моего PHP скрипт:

<?php 

session_start(); 

require_once dirname(__FILE__).'/../libs/googleAPI/vendor/autoload.php'; 

$scopes = array("https://www.googleapis.com/auth/cloud-platform"); 

// Create client object 
$client = new Google_Client(); 
$client->setRedirectUri('http://CENSORED/TEST_API.php'); 
$client->setAuthConfig("client_credentials_OAUTH.json"); 
$client->addScope($scopes); 

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) 
{ 
    $client->setAccessToken($_SESSION['access_token']); 
    $service = new Google_Service_Storage($client); 
    $request = $service->objects->listObjects("statsinstalls"); 
    $objects = $request->getItems(); 

    $sourceBucket = "pubsite_prod_rev_CENSORED"; 
    $sourceObject = "installs_CENSORED_" . date("Ym") . "_app_version.csv"; 
    $destinationBucket = "statsinstalls"; 
    $destinationObject = $sourceObject; 

    $postBody = new Google_Service_Storage_StorageObject($client); 

    $response = $service->objects->copy($sourceBucket, $sourceObject, $destinationBucket, $destinationObject, $postBody);    

    foreach ($objects as $item) 
     echo $item->id . "<br>"; 
} 
else if (!isset($_GET['code'])) 
{ 
    $auth_url = $client->createAuthUrl(); 
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 
} 
else 
{ 
    $client->authenticate($_GET['code']); 
    $_SESSION['access_token'] = $client->getAccessToken(); 
    $redirect_uri = 'http://CENSORED/TEST_API.php'; 
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
} 

Почему я получил ошибку 404? Спасибо.

ответ

1

Я нашел решение. Исходным объектом должен быть полный путь к файлу.

Я просто заменить:

$sourceObject = "installs_CENSORED_" . date("Ym") . "_app_version.csv"; 

по:

$sourceObject = "stats/installs/installs_CENSORED_" . date("Ym") . "_app_version.csv"; 

и что хорошо работают в настоящее время. Теперь я попытаюсь получить этот CSV в массив PHP