Получаем данные Google Analytics из PHP
30 апреля 2013
Иногда требуется показать данные из Google Analytics анонимным пользователям. Например, соорудить красивую статистику как на хабре или вывести счётчик посещений для конкретной страницы.
Реализуется не совсем очевидно. В официальных документах если и описано, то очень и очень расплывчато. Хорошо, что есть добрые люди на StackOverflow. Итак, решение.
- Идём в консоль API Google. Создаём новое приложение.
- В меню выбираем «services» и включаем «Analytics API».
- Идём в API Access, жмём «Create an OAuth 2.0 client ID»:
- Вводим имя приложения, загружаем логотип, жмём «next».
- Выбираем «Service account», «Create client ID».
- Загружаем себе файл секретного ключа. Складываем, например, в
libs/google/keys
.
- Возвращаемся в «API Access». Появился блок «Service account».
- Берём оттуда «Email address», идём в админку аккаунта Google Analytics, добавляем email в качестве пользователя аккаунта.
- Сливаем последнюю версию Google API PHP client, складываем в проект содержимое
src
. Например, вlibs/google
. - Пишем код.
require_once('libs/google/Google_Client.php'); require_once('libs/google/contrib/Google_AnalyticsService.php'); $client = new Google_Client(); $client->setApplicationName('My cool application'); $client->setAssertionCredentials( new Google_AssertionCredentials( // тот самый email, который мы добавляли в analytics '[email protected]', array('https://www.googleapis.com/auth/analytics.readonly'), // полный путь к загруженному секретному ключу file_get_contents('libs/google/keys/761774d73f0e-privatekey.p12'), )); // Client ID со страницы API Access $client->setClientId('13901308-vb17daf1ka19.apps.googleusercontent.com'); $client->setAccessType('offline_access'); $service = new Google_AnalyticsService($client); // получаем количество уникальных посетителей конкретного профиля с 2009 года $data = $service->data_ga->get('ga:20342384', '2009-01-01', date('Y-m-d'), 'ga:visitors', array( 'dimensions' => 'ga:pagePath', 'filters' => 'ga:pagePath==/user/samdark/', )); print_r($data);
В процессе работы с API очень полезны Google Analytics Query Explorer и полное описание API.
Комментарии RSS по email OK
Проще использовать библиотеку GAPI, о ней кстати тоже на StackOverflow упоминают. Работает безотказно, несмотря на то, что библиотека не развивается.
Отлично. Недавно как раз пришлось разбираться со всем этим. Но у меня ситуация такая, что необходимо брать информацию из профиля пользователя. При этом нужно было, чтобы он один раз авторизовался и дал добро на доступ к этим данным. Для этого использую: https://developers.google.com/accounts/docs/OAuth2WebServer#offline .
Может кому-то пригодится.
Делаю все как у тебя, но вываливается ошибка Google_AuthException: Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }' in C:\wamp\www\des\src\auth\Google_OAuth2.php on line 288 не подскажешь что делать?
Dmitry, у меня вариант без
OAuth
.Sam , а это что тогда?
P.S. Уже все заработало =)
Dmitry, а это там так вкладка называется. Там помимо настроек OAuth ещё и Service account, который и используется.
Неподскажете решение? Uncaught exception 'Google_AuthException' with message 'Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'' in /www/angry/www/system/lib/google/src/auth/Google_OAuth2.php:288
Люди, объясните, пожалуйста, чайнику, для чего нужны (или не нужны) файлы analytics.php? У меня сайт на Джумла 1.5, сегодня хостер прислал письмо, что у меня на сайте вирусов полно, стала разбираться - почти в каждой папке лежит такой файл. Убираю все вручную. Может кто подскажет?
Есть идеи по поводу вот такой ошибки?
Google_IO_Exception Problem with the SSL CA cert (path? access rights?)
Ошибка указывает на строки:
$response = curl_exec($curl); /* response = "" */ if ($response === false) { throw new Google_IO_Exception(curl_error($curl)); }
Пробовал отключать проверку безопасности curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false) - не помогло..
Спасибо Александр! и за решение и за Yii =)
По пункту N6: На code.google.com последней версии библиотеки нет (только устаревшие), актуальный репозиторий на GitHub
Выдает ошибку синтаксическую в строке 15 privatekey.p12'), )); PHP Parse error: syntax error, unexpected ';' in /home/u/ulovisto/API/public_html/index.php on line 14 [Tue Mar 10 09:47:22 2015] [error] PHP Parse error: syntax error, unexpected ')' in /home/u/ulovisto/API/public_html/index.php on line 15 [Tue Mar 10 09:49:51 2015] [error] [client 95.66.182.68] PHP Parse error: syntax error, unexpected ')' in /home/u/ulovisto/API/public_html/index.php on line 15
Как решить?
Вы пытаетесь подключить ключик как PHP-файл?
Запрос настроили. Сейчас думаем как запихнуть массив из GA в нормальные таблицы и графики... есть опыт или мысли. Будем благодарны за помощь
Подскажите в из-за ошибка ? The Google PHP API library needs the openssl PHP extension
С ошибкой, котору описал выше, справился. Она появлялась на локальном сервере. На сайте её нет. Но возникла другая ошибка. file_exists(): open_basedir restriction in effect. File(/tmp/Google_Client/ad/ad41610b13f338f946b8e9e744ec68f0.lock) is not within the allowed path(s): Как решить???