Google Analytics API 401 Недопустимые учетные данные

Я пытаюсь понять, как использовать Google API PHP для доступа к Google Analytics. В частности, я хочу загрузить данные о расходах из других кампаний. Мой код действительно работает для получения информации от GA, я могу просматривать данные трафика для профилей, но я не могу понять, как загрузить.

Вот код, который я использую для auth:

require_once 'google-api-php-client/src/Google_Client.php'; require_once 'google-api-php-client/src/contrib/Google_AnalyticsService.php'; session_start(); $client = new Google_Client(); $client->setApplicationName("GA-Tester"); $client->setClientId('xxx.apps.googleusercontent.com'); $client->setClientSecret('xxx'); $client->setRedirectUri('http://www.site.com/indext.php'); $client->setDeveloperKey('xxx'); $analyticsService = new Google_AnalyticsService($client); $dailyUploads = $analyticsService->management_dailyUploads; if (isset($_GET['logout'])) { unset($_SESSION['token']); } if (isset($_GET['code'])) { $client->authenticate(); $_SESSION['token'] = $client->getAccessToken(); $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); } if (isset($_SESSION['token'])) { $client->setAccessToken($_SESSION['token']); } if (!$client->getAccessToken()) { header ('Location:http://www.site.com/indext.php'); } else {... 

Этот код работает для запроса данных. Я могу получить список учетных записей, профилей, загружать данные трафика для определенного профиля и т. Д. Нет ошибок или проблем.

Когда я пытаюсь загрузить файл CSV, содержащий данные о затратах, я получаю ошибку «401 Invalid Credentials». Вот код, который отправляет файл:

 $send = $dailyUploads->upload( $accountId, $webPropertyId, $customDataSourceId, $start_date, 1, 'cost', array( "reset" => true, "data" => $cont, "mimeType" => "application/octet-stream", "uploadType" => "media")); 

Я дважды проверял все мои переменные, которые я передаю, они отправляют правильную информацию.

Итак, вот мой вопрос. Если все мои запросы GET работают без проблем, почему мой запрос POST выведет ошибку? Я не могу сказать, является ли это ошибкой с моим кодом или с настройками в консоли API . Может ли кто-нибудь направить меня в правильном направлении?

EDIT: Здесь генерируется код ошибки (минус идентифицируемые биты).

 Fatal error: Uncaught exception 'Google_ServiceException' with message 'Error calling POST https://www.googleapis.com/upload/analytics/v3/man agement/accounts/1234567/webproperties/UA-1234567-1/customDataSources/ xXxXxX/dailyUploads/2013-01-17/uploads?appendNumber=1&type=cost&reset= true&uploadType=media&key=xXxXxX: (401) Invalid Credentials' in /../pub lic_html/proj/google-api-php-client/src/io/Google_REST.php:66 Stack tra ce: #0 /../public_html/proj/google-api-php-client/src/io/Google_REST.ph p(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 / ../public_html/proj/google-api-php-client/src/service/Google_ServiceRes ource.php(186): Google_REST::execute(Object(Google_HttpRequest)) #2 /.. /public_html/proj/google-api-php-client/src/contrib/Google_AnalyticsSer vice.php(82): Google_ServiceResource->__call('upload', Array) #3 /../pu blic_html/proj/dailyUpload_send.php(60): Google_ManagementDailyUploadsS erviceResource->upload('1234567', 'UA-1234567-1', 'xXxXxXxXxXxXxXx...', ' in /../public_html/proj/google-api-php-client/src/io/Google_REST.php on line 66 

Я просто успешно загрузил данные о затратах в первый раз. В торговых комментариях с Николасом Пикерингом я столкнулся с документацией для авторизации API управления, которая гласит:

Вы получите код статуса 401 если ваш access_token истек, или если вы используете неправильную область для API.

Значение по умолчанию для области доступно только для чтения, поэтому все мои запросы GET работали без труда, но я не смог выполнить POST запросы через API. Я не помню, как я его нашел, но способ выполнить это в клиентской библиотеке PHP – добавить следующую декларацию к клиенту:

 $client->setScopes('https://www.googleapis.com/auth/analytics'); 

Как только я добавил эту строку в свой проект, мне удалось успешно загрузить данные о расходах. Я очень рад, что очистил это препятствие. Мне еще предстоит пройти долгий путь, чтобы завершить свой проект, но, по крайней мере, я знаю, что он сработает.

Я продолжал получать эту ошибку, пока не перешел в API Google Консоли -> API и auth -> API и не включил это использование API.