Přechod z Google API v2 na v3

Pavel PHP, Google

Jednoduchý postup, jak přejít od verze 2 Google API na novější verzi 3. Článek plynule naváže na 2 starší články a ukáže rozdíly mezi použitými kódy.

Přechod z Google API v2 na v3

Na blogu již jsou 2 články, využívající Google API. První stahuje události z Google Kalendáře a druhý nahrává a spravuje soubory na Google Drive. Oba články byly původně napsány pro verzi 2, která sice ještě funguje, ale je doporučeno již stáhnout verzi 3. Oba články jsou již také upravené, pro fungování s API v3. Zde je ukázka, jaké změny byly provedeny.

Vytvoření nových klíčů ve formátu JSON

Jednou z největších změn je nutnost vygenerovat si pro služby nový klíč, starý formát P12 se v APIv3 již nepoužívá a je nutné si vygenerovat klíč nový ve formátu JSON. Pro existující Service account lze vygenerovat více klíčů, pokud je tedy formát P12 ještě použit na starších projektech, není nutné jej mazat.

Vytvoření, ať už nového klíče, nebo celého nového Service account lze ve Vývojářské konzoli, na tom se nic nemění.

Nový klíč nebo servisní účet

Úprava kódů 

Kromě výměnu klíčů, jsou i trochu upravené třídy. Jména se neměnily, jejich vnitřní chování ale ano. Projekt Google API je rozdělen do několik projektů a instalaci doporučuji pouze přes Composer, protože obsahuje větší množství závislostí.

Instalace je pro všechny služby stejná, protože následně se přes Composer stáhnout stejně úplně všechny. Stačí využít tento Quickstart u GDrive.

Vytvoření instance Google Client

Ať už se využívá Drive, Calendar nebo úplně jiná služba, prvně je nutné vytvořit instanci Google Client. Ten zprostředkovává celou komunikaci, podepisování, ověření apod. První ukázka je pro starou verzi 2, pod tím následuje vytvoření klienta ve verzi 3. Mnohem jednodušší, ne?

// Google_Service_Drive lze nahradit
// jako třeba Google_Service_Calendar

/////////////////////////////////
// Vytvoření klienta pro APIv2 //
/////////////////////////////////
$client = new Google_Client();    
$client->setApplicationName("BackupDrive");

$key = file_get_contents("path/to/key.p12");
$cred = new Google_Auth_AssertionCredentials( $emailAddress,
    array(
        Google_Service_Drive::DRIVE,
        Google_Service_Drive::DRIVE_METADATA
        ), $key );    
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {    
    $client->getAuth()->refreshTokenWithAssertion($cred);   
}
$service = new Google_Service_Drive($client);

/////////////////////////////////
// Vytvoření klienta pro APIv3 //
/////////////////////////////////
$client = new Google_Client();    
$client->setApplicationName("BackupDrive");
$client->setAuthConfig("path/to/key.json");
$client->useApplicationDefaultCredentials();
$client->addScope([
    Google_Service_Drive::DRIVE,
    Google_Service_Drive::DRIVE_METADATA
]);
$service = new Google_Service_Drive($client);

Úprava kódu pro jednotlivé služby je popsána v daných článcích.

SSL certificate problem

Nová verze API využívá pro komunikaci GuzzleHTTP knihovnu. Ta s největší pravděpodobností využije cURL, který většinou bez speciální konfigurace hostingu vyhodí chybu certifikátu. Lepší je samozřejmě zkusit certifikát nahrát a využít, pokud se to ale nedaří, je možnost tuto kontrolu vypnout.

// Zavolat po vytvoření Google_Client
$httpClient = $client->getHttpClient();
$config = $httpClient->getConfig();
$config['verify'] = false;
$client->setHttpClient(new GuzzleHttp\Client($config));

Ohledně zkušeností s Google API, nebo konkrétně přechodem na verzi 3, se můžete podělit v komentářích

Přidat komentář

Právě odpovídáte na existující komentář. Zrušit

Komentáře

Novinky z blogu

Vlastní eventy v Javascriptu

Eventy jsou s Javascriptem spjaty už od jeho počátků. Přesto, že jich v základu obsahuje nepřeberné množství, je někdy užitečné vytvořit si eventy vlastní. V tomto článku se...

Další články