Статьи

Использование Google Analytics API с PHP: вход в систему

В этой серии мы рассмотрим, как мы можем использовать API Google Analytics для взаимодействия с нашими данными Google Analytics через PHP. Мы будем использовать Laravel в Homestead Improved , но вы можете следовать за любым фреймворком в любой среде разработки — Laravel + HI — просто самая быстрая и рекомендуемая отправная точка.

Требования

Чтобы иметь возможность следить за этим, вам необходимо иметь учетную запись Google Analytics, которую можно получить на странице Google Analytics .

Вы также должны быть знакомы с основами использования информационной панели Google Analytics.

Google Analytics Dashboard

Что мы будем строить?

В этой статье мы собираемся создать приложение, которое выглядит как Google Analytics Explorer , но для краткости мы собираемся ограничить функциональность и обсудить, как мы можем расширить нашу демонстрацию.

API Google Analytics

обзор

API Google Analytics делится на несколько API. Мы используем каждый API в зависимости от наших потребностей:

  • API управления :
    Предоставляет доступ к данным конфигурации Google Analytics, таким как учетные записи, свойства, представления, цели …

  • API метаданных :
    Предоставляет доступ к списку столбцов (Dimensions, Metrics), поэтому нам не нужно жестко кодировать их внутри нашего приложения.

  • Базовый API отчетности :
    Предоставляет доступ к данным панели мониторинга, и большинство задач доступно через этот API.

  • API отчетности в реальном времени :
    Предоставляет вам доступ к данным в реальном времени, например, на панели инструментов Google Analytics. На момент написания этой статьи этот API был в бета-версии.

Real Time Dashboard

  • Вставить API :
    Этот API позволяет вам создавать и вставлять информационные панели на ваш сайт, используя JavaScript.

  • API отчетов MCF :
    API отчетности многоканальных последовательностей позволяет запрашивать данные многоканальных последовательностей для аутентифицированного пользователя, что означает, что вы можете запрашивать данные из нескольких источников и использовать их для собственной статистики.

В этой статье мы сосредоточимся на API управления, API метаданных и Базовом API отчетности. Во-первых, давайте начнем с базового использования.

Основное использование

Чтобы начать использовать API, нам нужно создать новый проект в консоли разработчиков Google .
Google Developers Console

Панель инструментов вашего проекта должна выглядеть так:
Google Console Project Dashboard

Теперь у нас есть проект, готовый использовать любой из предоставляемых сервисов Google. Поскольку мы намерены использовать API Google Analytics, нам необходимо активировать его.

Если вы хотите использовать Google API, вам нужно предоставить две вещи:

1) Ваши учетные данные API.
2) Ваши ключи разработчика.

Перейдите в меню API & AUTH , выберите «API» и включите Analytics API
Google Console APIs

В меню API & AUTH выберите ссылку Credentials и выберите Create new client ID .

Выберите Web Application для нашего приложения, затем введите URL-адрес своего веб-сайта и URL-адрес страницы перенаправления входа. Поскольку мы будем использовать Laravel в нашей демонстрации, вы можете использовать localhost:8000 на этапе разработки, и не забудьте изменить https на http в вашем URL.

Google Console Credentials

Внизу страницы у вас есть Public API access к Public API access . Нам нужно создать новый ключ доступа.

1) выберите опцию Browser Key для нашей демонстрации.
2) в поле http referers вы можете оставить значение пустым, чтобы принимать запросы откуда угодно, или указать адрес своего домена.

Теперь мы готовы начать играть с API.

Лимиты и квоты

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

Конфигурация проекта

Я предполагаю, что вы уже знаете, как настроить новый проект Laravel на Homestead Improved .

Нам нужно потребовать "google/api-client": "dev-master" в нашем composer.json и обновить зависимости.

В моем app/config/ я создам файл analytics.php который я могу поместить свою конфигурацию.

 return [ 'app_name' => 'Your app name', //Can be anything 'client_id' => 'Your ID',//can be found on the credentials page 'client_secret' => 'Your secret ID',//on the credentials page 'api_key' => 'Your key'//can be found at the bottom of your credentials page ]; 

Чтобы разделить вещи, я создам папку с именем src в каталоге моего app и создам файл с именем GA_Service.php который я могу поместить всю логику запроса.

 // app/src/GA_Service.php class GA_Service{ //... } 

Попытка получить доступ к этому классу где-то в нашем коде приведет к исключению Class not found , поэтому мы можем воспользоваться функцией автозагрузки композитора.

В файле composer.json перейдите в раздел карты автозагрузки и добавьте наш путь в список.

 // composer.json ... "autoload":{ "classmap": [ ... , "app/src" ] } 

Не забудьте запустить composer dump-autoload после сохранения изменений.

По умолчанию Laravel включает файл с именем HomeController.php в каталог app/controllers . Мы будем использовать его в качестве основного контроллера приложения.

Вернуться к классу GA_Service ; для связи с API Google мы используем класс Google_Client . В нашем конструкторе мы создадим новый экземпляр и начнем заполнять необходимые параметры.

 public function __construct( Google_Client $client ){ $this->client = $client; $this->init(); } private function init(){ $this->client->setClientId(Config::get('analytics.client_id') ); $this->client->setClientSecret(Config::get('analytics.client_secret')); $this->client->setDeveloperKey(Config::get('analytics.api_key')); $this->client->setRedirectUri('http://localhost:8000/login'); $this->client->setScopes(array('https://www.googleapis.com/auth/analytics')); } 

Вместо того, чтобы создавать экземпляр класса внутри конструктора, мы передаем его как параметр и позволяем IoC Laravel разрешить его для нас. Для более подробной информации, не забудьте проверить эту статью .

Первые три строки метода init говорят сами за себя; метод Config::get конфигурацию из файла analytics.php .

Метод URI перенаправления — это URL-адрес перенаправления, который будет использоваться после проверки Google, и он должен совпадать с тем, который был ранее зарегистрирован на панели инструментов консоли Google.

В методе setScope мы указываем уровень доступа, необходимый для нашего приложения:

После настройки нашего клиента Google мы собираемся настроить наш процесс входа в систему:

 // app/src/GA_Service.php public function isLoggedIn(){ if (isset($_SESSION['token'])) { $this->client->setAccessToken($_SESSION['token']); return true; } return $this->client->getAccessToken(); }//authenticate public function login( $code ){ $this->client->authenticate($code); $token = $this->client->getAccessToken(); $_SESSION['token'] = $token; return token; }//login public function getLoginUrl(){ $authUrl = $this->client->createAuthUrl(); return $authUrl; }//getLoginUrl 
  • isLoggedIn : вернуть true, если у пользователя есть токен доступа, который будет использоваться.
  • getLoginUrl : если пользователь не вошел в систему, мы получаем URL аутентификации.
  • login : мы уже установили URL перенаправления на панели инструментов API Google, мы получаем параметр $_GET['code'] который мы можем использовать для получения токена для наших запросов.

Давайте использовать то, что у нас есть сейчас. Внутри нашего контроллера:

 // app/controllers/HomeController.php class HomeController extends BaseController { private $ga; public function __construct( GA_Service $ga ){ $this->ga = $ga; } public function index() { if( $this->ga->isLoggedIn() ){ return 'Show home page'; } else{ $url = $this->ga->getLoginUrl(); return View::make('login', [ 'url' => $url ]); } }//index }//class // app/routes.php Route::get('/', 'HomeController@index'); Route::get('/login', 'HomeController@login'); 

Мы GA_Service в наш контроллер, и когда пользователь попадает в наш индексный маршрут, мы проверяем, вошел ли он в систему. Если нет, мы генерируем URL аутентификации.

App permission request

После принятия разрешения на запрос вы будете перенаправлены на страницу входа с параметром code .

 // app/controllers/HomeController.php public function login(){ if( Input::has('code') ){ $code = Input::get('code'); $this->ga->login($code); return "Go to the home <a href='/'>page</a>"; } else{ return "Invalide request parameters"; }//else }//login 

В нашей функции входа в систему мы проверяем, существует ли code . Если это так, мы передаем его нашей функции GA_Service::login чтобы мы могли аутентифицироваться и получать токен для пользователя.

Завершение

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