API Google Analytics на веб-сайте Codeigniter

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

Я понимаю, что мне нужна учетная запись службы, если я не хочу проходить аутентификацию каждый раз, когда смотрю на панель инструментов (?)

Может ли кто-нибудь помочь мне заставить это работать? Огромное спасибо заранее!

Что я хочу сделать, так это: получить данные из аналитики Google, вернуть эти данные как, возможно, json, затем, я думаю, я могу сделать из них диаграмму с помощью плагина (возможно, какой-то плагин jQuery уже существует, или я могу использовать собственные графические ящики Google? ) и покажите это администраторам. Мне просто нужны очень простые данные, например, сколько пользователей за последний месяц...


person Michael    schedule 04.09.2014    source источник
comment
Я не понимаю, почему кто-то понизил бы это, поскольку, вероятно, у большего количества людей есть эта проблема! Я пробовал плагин для Sparks для Codeigniter, но ему уже два года, а это означает, что API устарел, и все соглашения об именах в примерах на сайте Google неверны...   -  person Michael    schedule 04.09.2014


Ответы (1)


Примерно через неделю - и, конечно же, в тот же день, когда я публикую этот вопрос, мне, наконец, удается исправить это самому.

Вот как я это делаю:

Я скачал последнюю версию Google Client API (для php) с их github.

Я добавил папку Google (src) в папку моего приложения/третьей стороны.

Внутри моего контроллера я включил необходимые файлы, выполнив следующие действия:

require_once(BASEPATH . '../application/third_party/Google/Client.php');
require_once(BASEPATH . '../application/third_party/Google/Service/Analytics.php');

Затем я добавил нижеследующий код для авторизации с помощью сервисного аккаунта (который вы получаете из консоли Google и выберите свой проект> API и авторизация> Учетные данные> Затем создайте новый идентификатор клиента, выберите Учетная запись службы, когда закончите, нажмите «Создать новый ключ p12» и добавьте этот ключ в свою папку Third_Party/Google:

session_start();

$client_id = '<YOUR_CLIENT_ID>'; //Client ID
$service_account_name = '<YOUR_CLIENT_EMAIL>'; //Email Address 
$key_file_location = BASEPATH . '../application/third_party/Google/<YOUR KEY.p12>'; //key.p12

$client = new Google_Client();
$client->setApplicationName("ApplicationName");
$service = new Google_Service_Analytics($client);

if (isset($_SESSION['service_token'])) {
  $client->setAccessToken($_SESSION['service_token']);
}

$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array(
        'https://www.googleapis.com/auth/analytics',
    ),
    $key,
    'notasecret'
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();

Приведенный ниже код предназначен для получения сеансов (посещений страниц) за последний 31 день.

$analytics = new Google_Service_Analytics($client);

$profileId = "ga:<YOUR_PROFILE_ID>";
$startDate = date('Y-m-d', strtotime('-31 days')); // 31 days from now
$endDate = date('Y-m-d'); // todays date

$metrics = "ga:sessions";

$optParams = array("dimensions" => "ga:date");
$results = $analytics->data_ga->get($profileId, $startDate, $endDate, $metrics, $optParams);

$data['report'] = $results->rows; //To send it to the view later

Чтобы получить все параметры и показатели, которые вы можете использовать, используйте эту ссылку. . Пример того, как отправить его в представление:

$this->view->load('your_view', $data);

Чтобы записать это в виде диаграммы, я просто использовал карты Google в JS (в представлении ) Я просто зациклил данные из $data['report'], чтобы нарисовать диаграмму.

Надеюсь, это поможет людям с этой проблемой в будущем.

person Michael    schedule 04.09.2014
comment
Спасибо за ваш код ... Я был в том же беспорядке, что и ваш вопрос. Ваш ответ показал мне все от начала до конца :) - person Penny; 28.01.2015
comment
Это действительно полезно, спасибо! К сожалению, я получаю сообщение об ошибке (403) «У пользователя нет учетной записи Google Analytics»... Это то, на что вы наткнулись? - person Owain Reed; 10.07.2015
comment
Нет, извините, у меня не было этой проблемы. - person Michael; 24.08.2015
comment
@Michael, вы добавили код для авторизации с помощью учетной записи службы, нам нужно добавить этот код в контроллер или в представление, нам нужно добавить это - person user8001297; 31.08.2017
comment
Указанный вами путь require_once(BASEPATH . '../application/third_party/Google/Service/Analytics.php'); не имеет файла Analytics.php в служебной папке. - person atul; 12.09.2017
comment
Получил файл Analytics.php здесь https://github.com/google/google-api-php-client-services/blob/master/src/Google/Service/Analytics.php - person atul; 12.09.2017
comment
Я создам сервисные аккаунты. но я не понимаю $client_id = '‹YOUR_CLIENT_ID›'; мой проект создает идентификатор ключа ..... Поставлю ли я идентификатор ключа вместо идентификатора клинта ???? - person MD JAMIL AJ; 05.07.2020
comment
$profileId = ga:‹ВАШ_ПРОФИЛЬ_ID›; Не создает идентификатор моего профиля - person MD JAMIL AJ; 05.07.2020