Web разработка

Используем Google apiclient в Yii2

В данном примере я буду получать из Google analytics количество уникальных посетителей. Именно тот счетчик что вы видите под статьей.

Первым делом необходимо зайти в папку проекта Yii2 и через Composer установить библиотеку:
composer require google/apiclient

Затем нужно создать сервисный аккаунт через консоль гугл.

Включить нужное нам API здесь

Создать и скачать  json файл для авторизации под этим аккаунтом.

Теперь создаем саму модель:

<?php

namespace app\models;

use Google_Client;
use Google_Service_Analytics;
use yii\base\Model;
use yii\db\ActiveRecord;

class GoogleClient extends Model
{
    //Запрос в Google Analytics с помощью нашего apiclient
    private static function getUniqueViews($page)
    {
        //Здесь нужно указать путь к нашему файлу для авторизации. Его нужно положить в любую защищенную папку проекта.
        putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__.'/service-account'.'.json'); 

        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope('https://www.googleapis.com/auth/analytics.readonly');
        $analytics = new Google_Service_Analytics($client);
        //Здесь id вашего представления в GoogleAnalytics. Если зайти на главную страницу в GoogleAnalytics то это значение в конце после "p" в строке 
        //параметров
        $analyticsViewId    = 'ga:1';
        $startDate          = '2018-05-05';
        $endDate            = date('Y-m-d');
        $metrics            = 'ga:visitors,ga:uniquePageviews';
        $data = $analytics->data_ga->get(
            $analyticsViewId,
            $startDate,
            $endDate,
            $metrics,
            array(
                'dimensions'    => 'ga:pagePath',
                'filters'       => 'ga:pagePath==/'.$page,
                )
        );
        return $items = $data->getRows()[0][1];//Возвращает нужные нам данные из полученного json.
    }
    //Здесь мы используем нашу функцию и записываем результат в поле статьи.
    //Вызывать лучше через какие-либо равные промежутки времени. Например каждый час.

    public static function setupUniqueViews(ActiveRecord $article)
    {
        $viewsCount = GoogleClient::getUniqueViews('view?id='.$article->id);

        $article->viewed = $viewsCount;

        $article->save();
    }

}

Это самый простой и быстрый способ для получения результата. Надеюсь кому-то будет полезен.

 

 

Оставить комментарий