Pokiaľ ste niekde používali autentifikáciu Google ClientLogin, tak vám pravdepodobne prestala pre pár dňami fungovať komunikácia s Google API. Od 20.4.2012 je oficiálne deprecated a podľa Google Developers Blog už je od 20.4.2015 vypnutá.
Autentifikácia pomocou ClientLogin
Stačil vám na to hociaký Google účet, ktorý mal oprávnenie s daným API komunikovať. Autentifikácia pomocou ClientLogin bola veľmi jednoduchá – poslal sa HTTP POST požiadavok s e-mailom, heslom a názvom služby voči ktorej sa chcete autorizovať. Pokiaľ boli údaje správné, v odpovedi vám API vrátilo autorizačný token.
Autentifikácia pomocou OAuth 2.0
Google doporučuje migráciu na protokol OAuth 2.0. U OAuth si už nevystačíte s bežným Google účtom. Potrebujete získať nové prístupové údaje z Google Developers Console.
Do Google Developers Console sa prihlásíte svojim Google účtom a vytvoríte si nový projekt (pokiaľ ho ešte nemáte).
Vygenerujte si prístupové údaje. Pokiaľ bude s API komunikovať vaša aplikácia zo serveru, zvoľte možnosť „Service account“. Po vytvorení prístupových údajov si nechajte vygenerovať certifikát – P12 key.
Ubezpečte sa, že projekt má povolený prístup k API, ktoré chcete používať – napr. Google Analytics.
V nastaveniach danej Google služby povoľte novo vytvorenému účtu prístup.
Komunikácia s API
Na komunikáciu s API môžete použiť knižnice pripravené od Google. Sú dostupné v rôznych jazykoch – od Python, cez Javu, PHP až po Node.JS.
V našom prípade si ukážeme prácu s verziou pre PHP. Dostupná je na GitHube a nainštalovať ju môžete aj cez composer:
"require": {
"google/apiclient": "1.0.*@beta"
}
Google napísal príručku a pár návodov, ale kód je dobre zdokumentovaný (napr. trieda Google_Service_Analytics_DataGa_Resource), takže práca s knižnicou je celkom pohodlná. Napríklad kód pre načítanie návštev konkrétneho webu za posledný mesiac, rozdelený do jednotlivých kanálov, vyzerá takto:
$client = new \Google_Client();
$client->setApplicationName('myAppWithOAuth');
$analytics = new \Google_Service_Analytics($client);
$credentials = new \Google_Auth_AssertionCredentials(
'[email protected]',
[\Google_Service_Analytics::ANALYTICS_READONLY],
file_get_contents(__DIR__ . '/certificate.p12')
);
$client->setAssertionCredentials($credentials);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($credentials);
}
$data = $analytics->data_ga->get(
'ga:82813927',
'31daysAgo',
'yesterday',
'ga:visits',
[
'dimensions' => 'ga:date,ga:medium,ga:socialNetwork',
'sort'=>'-ga:visits',
]
);