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.
