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. Google+ 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. Google apis console services

Następnie wchodzimy na zakładkę api access i generujemy api key. Stworzymy prostą aplikację pobierającą podstawowe informacje z profilu użytkownika. Najpierw pobierzemy Google api php client. Jest to tzw. aplikacja startowa php, na której będziemy się wzorować. Rozpakowujemy paczkę i kopiujemy folder do katalogu głównego naszej aplikacji. W pierwszym przykładzie wykorzystamy api key, a w drugim OAuth. Na początek stwórzmy plik php np. index.php.
<!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.