Skočiť na hlavný obsah

Ako si vypísať fotogalérie z Googlu pomocou Google Photos API

V dnešnom príspevku si ukážeme kód, v ktorom si vytvoríme Google projekt, následne vytvoríme prístupové API údaje, pomocou ktorých sa napojíme na knižnicu Googlu. Po úspešnom napojení si vypíšeme naše fotogalérie a k nim príslušné fotografie.

 

1. Skôr než začnete, je potrebné v prvom rade vytvoriť API prístup cez ktorí sa budeme pripájať pomocou nasledujúcej metódy:

1) Navštívte Google API Console

2) Na paneli vyberiete projekt alebo si vytvorte nový projekt.

3) Cez vyhľadávač nájdete Google Photos API a povolíte

 

2. Vyžiadajte si ID klienta OAuth 2.0

1) Navštívte Google API Console Dashboard 

2) Na Credentials stránke, kliknite na Create Credentials > OAuth client ID.

3) Vyberte typ aplikácie. V tomto príklade je typ aplikácie webová aplikácia.

4) Na identifikáciu ID klienta zadajte meno a prístupové URL vašej web stránky

5) Kliknete na CREATE

6) Z nasledujúceho dialógu si skopírujte Your Client IDYour Client Secret

 

3. Teraz je potrebné si napojiť Google Photos API a Google Client API

V prvom rade je potrebné cez composer nainštalovanie Google Api klienta, pomocou ktorého sa budeme autorizovať do systému. Cez composer spustíme nasledujúci kód a nainštalujeme knižnicu do priečinku /vendor.

$ composer require google/apiclient:^2.0

 

Knižnica Google Photos API za vás vybavuje backendové API volania. Najskôr si stiahnite a nainštalujte klientsku knižnicu API Google Photos Library z GitHubu.

Použite composer pre nainštalovanie knižnice spolu s všetkými dependencies. Spustením nasledujúceho príkazu pridáte knižnicu do svojho projektu a stiahnete ju do /vendor adresára.

$ composer require google/photos-library

 

4. Autorizácia a získanie potrebných tokenov.

V prvom rade si vo svojom PHP napojíme nainštalovanú knižnicu obvykle cez:

require __DIR__ . '/vendor/autoload.php';

use Google_Client;	
use Google\Rpc\Code;
use Google\Auth\OAuth2;

...

 

Teraz je potrebné sa autorizovať vytvorením autorizačnej URL pomocou autentifikácie OAuth2.

...

$clientId = '-- VASE CLIENT ID --';
$clientSecret = '-- VAS CLIENT SECRET --';
$redirectURI = '-- VASA URL KAM VAS GOOGLE PRESMERUJE PO AUTORIZACII --';
$scopes = 'https://www.googleapis.com/auth/photoslibrary';					
					
$oauth2 = new OAuth2([
     'clientId' => $clientId,
     'clientSecret' => $clientSecret,
     'grant_type' => 'authorization_code',
     'authorizationUri' => 'https://accounts.google.com/o/oauth2/v2/auth',
     'redirectUri' => $redirectURI,
     'tokenCredentialUri' => 'https://www.googleapis.com/oauth2/v4/token',
     'scope' => $scopes,
]);	

...

 

Teraz si určíme, čo sa má stať, ak dostaneme autorizačný kód po úspešnej Google autorizácií.

...

if (!isset($_GET['code'])) {
		
     // ak ešte nemáme autorizačný kód, vytvoríme autorizačnú URL na ktorú sa necháme presmerovať				
     
     $authenticationUrl = $oauth2->buildFullAuthorizationUri(['access_type' => 'offline', 'prompt' => 'consent']);
     header("Location: " . $authenticationUrl);
     die();
						
} else {

     // ak už máme autorizačný kód, získame access a refresh token
						
     $oauth2->setCode($_GET['code']);
     $authToken = $oauth2->fetchAuthToken();
     $accessToken = $authToken['access_token'];						
     $refreshToken = $oauth2->getRefreshToken();

     // na základe refresh tokenu si vytvoríme prístupové credentials
						
     $_SESSION['credentials'] = new UserRefreshCredentials(
          $scopes,
          [
               'client_id' => $clientId,
               'client_secret' => $clientSecret,
               'refresh_token' => $refreshToken
          ]
     );

    // teraz si credentials zapíšeme k sebe do vlastnej databázy
    // Toto je potrebne si zapisať do databázy: serialize($_SESSION['credentials'])

     // teraz presmerujeme na nami požadovanú success URL
     header("Location: /nasaSuccessUrl");
     die;						  

}

 

5. Teraz sa už môžeme napojiť na Google Photos API

1) V prvom rade si vytovríme nový PHP súbor a napojíme už nainštalovanú knižnicu.

use Google\Auth\Credentials\UserRefreshCredentials;
use Google\Photos\Library\V1\PhotosLibraryClient;
use Google\Photos\Library\V1\PhotosLibraryResourceFactory;

...

 

2) Z databázy si vytiahneme prístupové credentials, ktoré sme si zapísali v predchádzajúcom kroku. Následne sa napojíme na Google klienta a necháme si vypísať albumy, kde získame url našich fotiek.

...

// $result = vytiahnuté credentials z databázy
$result = unserialize($result);

// napojíme sa na google photos klienta
$photosLibraryClient = new PhotosLibraryClient(['credentials' => $result]);
$response = $photosLibraryClient->listAlbums();

foreach ($response->iterateAllElements() as $album) {

     // teraz už si vieme vypísať potrebné parametre našich albumov
     $albumId = $album->getId();
     $title = $album->getTitle();

     // vypísanie fotiek prebieha nasledovne:
     $response = $photosLibraryClient->searchMediaItems(['albumId' => $albumId]);

     foreach ($response->iterateAllElements() as $item) {

          $photoUrl= "";
          $photoUrl= $item->getBaseUrl(). '=w1920-h1080-c';  // -c == crop, w/h == width/height,  =d == download
										
          $popisfotky = "";
          $popisfotky = $item->getDescription();

     }

}

 

Viac potrebných parametrov pri výpise fotiek nájdete na:

https://developers.google.com/photos/library/guides/access-media-items

 

V ďalšom článku si povieme, ako si vytvoriť album cez Google Photos API a nahrať do neho naše fotografie.