Google Analytics V3 és OAuth PHP kikérdező

Egy gyors Tutorial azoknak akik OAuth -al szeretnének kikérdezni a Google Analytics V3 -as API jából adatokat.
A napokban szembesültünk vele, hogy a Google Analytics V1 es apiját kikukázta a kereső óriás, melynek egyik legfőbb oka, hogy a kód alapú bejelentkezést kezdik kivezetni, és áttérni az OAuth -ra.
Éppen ezért mindenkinek ajánlatos az eddigi statisztika kikérdezését úgymond kukába vetni, és egy új irányba elindulni, ahol a felhasználó hitelesítés már nem egy felhasználó és jelszó párossal történik, hanem hitelesített tokeneken keresztül.
Ez a cikk megpróbálja a legrövidebb utat felvázolni a váltásra, a főbb lépésekkel. Reméljük, segíthetünk azoknak akik még csak keresik a legmegfelelőbb megoldást az átállásra.
Az interneten számtalan fórum foglalkozik a témával, itt az általunk talált legjobb megoldást próbáljuk bemutatni pár egyszerű lépésben.
A következő classt fogjuk használni:

https://github.com/erebusnz/gapi-google-analytics-php-interface

Ez egy alap interfész, mely pont azt tudja amire nekünk szükségünk van, először is tud hitelesíteni minket, lekezeli a tokeneket, és ki tud kérdezni a Google Analytics V3 API-n keresztül adatokat.

1. lépés:
Töltsük le a gapi.class.php -t és helyezzük el a Lib könyvtárunkba. Cake PHP alatt érdemes a Vendor könyvtárba tenni és az alábbi sorral betölteni.
App::import('Vendor', 'gapi', array('file' => 'gapi/gapi.class.php'));
2. lépés:
Ahhoz, hogy tudjuk használni az API-t szükségünk lesz jogosultságokra. Ehhez viszont szükségünk lesz egy Projekt -re a Google Developer Console -on.
Navigáljunk el a https://console.developers.google.com/project oldalra, és hozzuk létre a projektünket. Ha már létezik akkor válasszuk ki azt.
A bal menüben válasszuk ki az APIs & auth -> Credentials menüpontot.
A megjelent oldalo találunk egy Create new Client ID gombot az OAuth részleg alatt. Hozzunk létre egy kliens azonosítót. Nagyon fontos! A felkínált fiók formák közül a Service account -ot válasszuk ki!
Ha ez kész van, töltsük le a .p12 kiterjesztésű fájlt. Ne zárjuk le az ablakot, mert szükségünk lesz még az account email címére, mely egy random generált email.
Valami hasonló: xxxxxxx@developer.gserviceaccount.com

3. lépés
A letöltött .p12 kulcs fájlunk lesz az amivel hitelesíti a userünket a túloldali szerver, így ezt töltsük fel egy a userek által rejtett, vagy nem olvasható könyvtárba.
4. lépés
Próbáljunk meg kapcsolódni OAuth on keresztül. Erre segítségünkre lesz a GAPI Class, helyezzük el az alábbi sort a kódunkban:
$ga = new gapi('XXXX@developer.gserviceaccount.com','oauthkeyfile.p12');
Itt látható, hogy a class -unk két paramétert vár inicializáláshoz. Az első paraméter a kapott service email a második paraméter pedig az .p12 kiterjesztésű kulcs fájlon elérési útja. Adjuk meg ezeket, amennyiben nem dob hitelesítési hibát a rendszer, akkor sikerült tokent szerezni, mellyel már meghívhatjuk az Analytics -et.

5. lépés

Ha észvesztve rohanunk előre akkor gyorsan rájövünk arra, hogy egyelőre a minta hívás nem vezet sok sikerre.
$ga->requestReportData(
145141242,
array('browser','browserVersion'),
array('pageviews','visits')
);
Ugyanis hibát fogunk kapni, miszerint nincs jogosultsága az adott usernak olvasni az Analytics kiválasztott fiókját.
Éppen ezért mielőtt elemeznénk mit is csinál ez a kód, lépjünk be az Analytics be és a kívánt fiókhoz rendeljük hozzá a kapott email című felhasználót.
Ezt az Analyticsben az Adminisztrálás menüpont alatt tehetjük meg. A kiválasztott fiók Felhasználókezelés menüpontjában.
Amennyiben hozzáadtuk a felhasználót nézzük meg valóban van e joga az adott Table ID kikérdezésére. Amit tapasztaltunk a felhasználó jogosultságai nem azonnal jönnek létre, így ha a kódunk folyamatosan hibát dob, hogy nincs a felhasználónak joga a kiválaszott fiókhoz, várjunk kicsit.

6. lépés
Amennyiben mindent jól csináltunk, a következő sorral kérdezhetünk ki adatokat a Google Analytics V3 apijából:
$ga->requestReportData(
$report_id,
$dimensions=null,
$metrics,
$sort_metric=null,
$filter=null,
$start_date=null,
$end_date=null,
$start_index=1,
$max_results=10000
) ;
Látható, hogy először is az úgynevezett Table ID t kell megadjuk, melyet a legkönnyebben erről az oldalról szedhetünk le, ha a fiókunk csatlakoztatva van a lekérdezendő oldal statisztikájához:

https://ga-dev-tools.appspot.com/query-explorer/

A második paraméterben a dimenziókat adhatjuk meg (x- tengely), pldául ha naponként szeretnénk a látogatások számát kikérdezni akkor itt a 'day' kulcsszót használjuk.
A harmadik paraméter a kikérdezendő adatokat (y-tengely) adhatjuk meg, például 'visits' vagy 'pageviews'.
A negyedik paraméterrel filterezhetjük a találatokat. Például csak az adott domaint szeretnénk kikérdezni akkor 'hostname==totalstudio.hu'. A filterekről bővebben az adott linken még többet megtudhatunk:

https://github.com/erebusnz/gapi-google-analytics-php-interface/blob/wiki/UsingFilterControl.md

Az ötödik paraméterrel megadhatjuk miszerint tegye sorrendbe a találatokat a túloldal, így ezzel nekünk nem kell külön foglalkozni. A példánkban a napok lesznek az alap rendezők.
És végül az hatodik és hetedik paraméterben megadhatjuk, mely időszakra végezzük el a lekérdezést.
Ha ezt az egészet egybe gyúrjuk a következő php hívással kaphatjuk meg az adatokat:
$ga->requestReportData(
11111,
array('day'),
array('visits','pageviews'),
array('day'),
'hostname==totalstudio.hu',
'2015-05-01',
'2015-05-28'
) ;
7. lépés
Most már nem maradt más hátra mint értelmezni az adatokat.
foreach($ga->getResults() as $result){
echo 'Nap: '.$result.'';
echo 'Pageviews: ' . $result->getPageviews() . ' ';
echo 'Visits: ' . $result->getVisits() . '';
}

Reméljük segítettünk eme gyors útmutatóval azoknak akik nem tudták miként váltsanak OAuth módszerre, és hogyan használják a V3 -as Analytics API-t.

Google Analytics V3 és OAuth PHP kikérdező

#totalstudio