Google plus api
Google plus api pozwala programistom na pobieranie publicznych danych z Google+. Celem api jest stworzenie interfejsu dzięki któremu można zintegrować aplikację z Google+. W dwóch skryptach przyjrzymy się podstawowym aspektom api. Api wymaga autoryzacji dostępu za pomocą OAuth 2.0 lub api key (dostęp tylko do publicznych danych użytkownika). W celu jego uzyskania należy wejść na stronę api console i zalogować się swoim kontem google. Następnie klikamy na Create Project i podajemy nazwę naszego projektu. Na liście dostępnych serwisów znajdujemy Google+ API i klikamy ikonkę off, która po zaakceptowaniu regulaminu powinna zmienić się na zielone On.
<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <?php require_once 'google-api-php-client/src/apiClient.php'; require_once 'google-api-php-client/src/contrib/apiPlusService.php'; session_start(); $client = new apiClient(); $client->setApplicationName("Google+ Tutorial"); $client->setDeveloperKey('TWOJ_API_KEY'); $plus = new apiPlusService($client); $me = $plus->people->get('id uzytkownika'); print '<a href="'.$me['url'].'"><img style="float:left;" src="'.$me['image']['url'].'" alt="" /></a>'; print '<div>Name: '.$me['displayName'].'</div>'; ?> </body> </html>Na początku includujemy dwa pliki z katalogu src pobranej paczki. Następnie tworzymy obiekt klasy apiClient. Ustawiamy nazwę aplikacji i podajemy api key. Następnie w zmiennej $plus zapisujemy obiekt apiPlusService. Podstawowe informacje z profilu użytkownika możemy łatwo otrzymać wywołując $plus->people->get('id uzytkownika'). Zwraca ona dane w postaci tablicy. Zawartość tablicy zależy od tego jakie dane użytkownik udostępnia publicznie. Jak widzimy w następnych linijkach kodu pod kluczem displayName znajduje się wyświetlana nazwa użytkownika (zazwyczaj imię i nazwisko), pod kluczem url - adres url do profilu użytkownika itp. Najlepiej przyjrzeć się tablicy wykonując na niej funkcję print_r. W skrócie wyświetlamy zdjęcie profilowe linkujące do profilu użytkownika oraz obok jego name (imię i nazwisko). Możemy również pobrać aktywności użytkownika. W tym celu dopiszmy do naszego kodu.
$optParams = array('maxResults' => 5);//tablica dodatkowych parametrów $activities = $plus->activities->listActivities('id uzytkownika', 'public', $optParams);//pobranie aktywności print '<div style="clear:left;">'; foreach ($activities['items'] as $activity) { $actor = $activity['actor']; print "{$actor['displayName']} napisał: {$activity['object']['content']}\n<br />"; } print '</div>';W zmiennej $optParams zapisujemy tablicę parametrów (w naszym przypadku jeden parametr oznaczający maksymalną liczbę zwróconych aktywności), którą przekazujemy później do metody listActivities. W odpowiedzi otrzymamy tablicę aktywności. Możemy przez nią przejść np. petlą foreach i wyświetlić takie dane jakie chcemy. Podobnie jak poprzednio warto najpierw użyć print_r aby zobaczyć jakie elementy mamy w tablicy do dyspozycji.
Przejdziemy teraz do drugiego przykładu wykorzystującego OAuth. Będziemy wyświetlać informacje dotyczące aktualnie uwierzytelnionego użytkownika. Utwórzmy zatem klucz OAuth. Wchodzimy na zakładkę api access i klikamy Create an OAuth 2.0 client ID. W następnym kroku podajemy nazwę produktu i uploadujemy logo. W kolejnym kroku wybieramy typ aplikacji i host. Otrzymamy client id, client secret. Będziemy je musieli podać w aplikacji. Początek nowego pliku jest taki sam. Potem zamiast api keya podajemy wygenerowany wcześniej client id, api secret oraz redirect uri.
require_once 'google-api-php-client/src/apiClient.php'; require_once 'google-api-php-client/src/contrib/apiPlusService.php'; session_start(); $client = new apiClient(); $client->setApplicationName("Google+ Tutorial"); $client->setClientId('insert_your_oauth2_client_id'); $client->setClientSecret('insert_your_oauth2_client_secret'); $client->setRedirectUri('http://example.com/path/to/myapp.php'); $plus = new apiPlusService($client);Kolejne linijki kodu to już przebieg uwierzytelniania przy użyciu OAuth 2.0. W zależności czy użytkownik jest uwierzytelniony (posiada access token) czy nie wyświetlamy mu jego dane profilowe oraz aktywności lub link do uwierzytelnienia się.
<?php if (isset($_REQUEST['logout'])) { unset($_SESSION['access_token']); } if (isset($_GET['code'])) { $client->authenticate(); $_SESSION['access_token'] = $client->getAccessToken(); header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); } if (isset($_SESSION['access_token'])) { $client->setAccessToken($_SESSION['access_token']); } if ($client->getAccessToken()) { $me = $plus->people->get('me'); $url = $me['url']; $img = $me['image']['url']; $name = $me['displayName']; $personMarkup = "<a rel='me' href='$url'>$name</a><div><img src='$img?sz=82'></div>"; $optParams = array('maxResults' => 5); $activities = $plus->activities->listActivities('me', 'public', $optParams); $activityMarkup = ''; if(isset($activities['items'])) { foreach($activities['items'] as $activity) { $url = $activity['url']; $title = $activity['title']; $content = $activity['object']['content']; $activityMarkup .= "<div class='activity'><a href='$url'>$title</a><div>$content</div></div>"; } } $_SESSION['access_token'] = $client->getAccessToken(); } else { $authUrl = $client->createAuthUrl(); } ?> <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel='stylesheet' href='style.css' /></head> <body> <header><h1>Google+ Tutorial</h1></header> <div class="box"> <?php if(isset($personMarkup)): ?> <div class="me"><?php print $personMarkup; ?></div> <?php endif ?> <?php if(isset($activityMarkup)): ?> <div class="activities">Twoje aktywności: <?php print $activityMarkup; ?></div> <?php endif ?> <?php if(isset($authUrl)) { print "<a class='login' href='$authUrl'>Połącz</a>"; } else { print "<a class='logout' href='?logout'>Wyloguj</a>"; } ?> </div> </body> </html>Zauważmy, że tam gdzie wcześniej podawaliśmy id użytkownika piszemy me. Oznacza to, że pobieramy dane dla aktualnie uwierzytelnionego użytkownika.