Migrácia z Google ClientLogin na OAuth 2.0

, Štítky: API, OAuth 2.0

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).

Úvodná obrazovka Google Developers Console

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.

Zoznam prístupových údajov v Google Developers Console

Ubezpečte sa, že projekt má povolený prístup k API, ktoré chcete používať – napr. Google Analytics.

Zoznam povolených API v Google Developers Console

V nastaveniach danej Google služby povoľte novo vytvorenému účtu prístup.

Zoznam autorizovaných účtov v Google Analytics

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',
    ]
);

← Späť na zoznam