Ответ 1
ОБНОВЛЕНИЕ 21 июля 2012 г.
API Google Analytics V3 теперь поддерживает токены OAuth2, возвращенные запросом JWT под подпиской .p12. То есть мы теперь можем использовать API Analytics w/service accounts.
В настоящее время вытягивает 4 года ежедневных показателей, просто для этого.
Здесь быстрый "n" грязный шаг за шагом:
-
Перейдите в Консоль API Google и создайте новое приложение
-
На вкладке "Службы" переверните переключатель Google Analytics
-
На вкладке "Доступ к API" нажмите "Создать идентификатор клиента OAuth2.0"
-
введите свое имя, загрузите логотип и нажмите "Далее"
-
выберите опцию Учетная запись службы и нажмите Создать идентификатор клиента
-
скачать секретный ключ
-
-
Теперь вы снова на странице доступа к API. Вы увидите раздел "Учетная запись службы" с идентификатором клиента и адресом электронной почты
-
Скопируйте адрес электронной почты (что-то вроде #### @developer.gserviceaccount.com)
-
Посетите Admin Admin и добавьте это письмо как пользователь в свои свойства
-
Это необходимо; в противном случае вы получите загадочные ошибки.
-
-
Получите последний API-интерфейс API Google PHP через Github
git submodule add https://github.com/google/google-api-php-client.git google-api-php-client-read-only
-
Рок-н-ролл (спасибо всем за советы по обновленным именам классов):
// api dependencies require_once(PATH_TO_API . 'Google/Client.php'); require_once(PATH_TO_API . 'Google/Service/Analytics.php'); // create client object and set app name $client = new Google_Client(); $client->setApplicationName(APP_NAME); // name of your app // set assertion credentials $client->setAssertionCredentials( new Google_Auth_AssertionCredentials( APP_EMAIL, // email you added to GA array('https://www.googleapis.com/auth/analytics.readonly'), file_get_contents(PATH_TO_PRIVATE_KEY_FILE) // keyfile you downloaded )); // other settings $client->setClientId(CLIENT_ID); // from API console $client->setAccessType('offline_access'); // this may be unnecessary? // create service and get data $service = new Google_Service_Analytics($client); $service->data_ga->get($ids, $startDate, $endDate, $metrics, $optParams);
оригинальное обходное решение ниже
Кажется, что, несмотря на двусмысленную документацию, большинство Google API не поддерживайте учетные записи службы, включая Google Analytics. Oни не может переваривать токены OAuth2, возвращенные запросом JWT с подпиской .p12. Так, на данный момент вы не можете использовать API Google Analytics V3 с учетной записи службы.
Обход проблемы:
В консоли Google API создайте приложение клиент.
Следуйте инструкциям в API API Google PHP, чтобы создать
client_auth_url
, используяclient_id
,client_secret
, иredirect_uri
Войдите в Google с помощью cURL. (Обязательно используйте файл cookie!)
Откройте
client_auth_url
в cURL и заполните форму. Убедитесь, что вы установилиcurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
иcurl_setopt($ch, CURLOPT_HEADER, 1);
какauthorization_code
будет в заголовкеLocation:
ответа.Используя
client_id
,client_secret
,redirect_uri
и код активации с шага 4, отправьте запрос Google OAuth2 Token machine. Убедитесь, что вы добавилиgrant_type = "authorization_code"
в свои поля сообщения.Ура, теперь у вас есть
refresh_token
, который никогда не истекает, и рабочийaccess_token
! Отправьте запрос на Google OAuth2 Token машина с вашимиclient_id
,client_secret
,redirect_uri
, иrefresh_token
, когда истечет срок действияaccess_token
, и вы получите новый.