Я пытаюсь понять, как использовать Google API PHP Client для доступа к Google Analytics. В частности, я хочу, чтобы upload cost data из других кампаний. Мой код действительно работает для получения информации от GA, я могу просматривать данные трафика для профилей, но я не могу понять, как загрузить.Google Analytics API 401 Недопустимые учетные данные
Вот код, который я использую для входа:
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 console. Может ли кто-нибудь направить меня в правильном направлении?
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
Вы посмотрели на это? https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtDailyUploadGuide#upload –
Да, мои запросы свободно основаны на этом коде. Я использую библиотеку PHP, поэтому она не выглядит идентичной, но мой код содержит каждый из этих элементов. – Lenwood
Вы авторизовали область полномочий https://www.googleapis.com/auth/analytics? –