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 ID a Your 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.