Entwicklung & Design

Google+ API: Einstieg für Entwickler

Die Google+ API erlaubt Entwicklern, öffentliche Daten aus Google+ auszulesen und zu verarbeiten. Wie das konkret funktioniert, zeigt das folgende kleine Tutorial. Für die Zukunft ist damit zu rechnen, dass die API mehr Möglichkeiten zur Verfügung stellen wird. Je nach Anwendungszweck ist aber bereits heute eine nutzwertige Anbindung möglich.

Google+ API: Grundlegende Funktionsweisen

Die noch in ihren Kinderschuhen steckende Google+ API erlaubt derzeit das Auslesen öffentlicher Daten eines oder mehrere Google-Profile. Für die Zukunft sind weitere Integrationsmöglichkeiten geplant. Derzeit belegt Google die API-Nutzung mit einem Abfragelimit von 1.000 Queries pro Tag.

Um Anwendungen, die die API benutzen wollen zu authorisieren, setzt Google auf OAuth2. Die Abfrage der Daten geschieht im Rahmen eines RESTful API-Designs und ist so auch vorbereitet für manipulierende Zugriffe. Um an die Profilinformationen eines Google-Users zu gelangen, sähe der API-Call wie folgt aus:

GET https://www.googleapis.com/plus/v1/people/userId

Anstelle des Wörtchens userId stünde hier natürlich die konkrete ID des Users, dessen Informationen man sehen möchte, also in meinem Falle die 101026873872956334466. Die Rückgabe der Daten erfolgt im JSON-Format.

Zusätzlich zum eben genannten einfachen Aufruf müssen verschiedene Parameter mit übergeben werden. Die Wichtigsten sind:

  • callback: Um JSONP mit der API verwenden zu können, kann so die Javascript-Funktion spezifiziert werden, mit der die Daten weiterverarbeitet werden sollen.
  • fields: Sollen nicht alle Informationen ausgelesen werden, so kann man hier die gewünschten Datenfelder spezifizieren.
  • key: Dieser Parameter übergibt den API-Key, den sich jeder registrierte Entwickler zuteilen lässt. Mit dem Key identifiziert sich die Anwendung gegenüber der API.
  • access_token: Das OAuth2-Access-Token des aktuellen Users, welches im Rahmen des OAuth-Autorisierungsprozesses zugeteilt wurde, wird ebenfalls übergeben.
  • prettyPrint: Wird dieser Parameter mit dem Wert true übergeben, ist die Antwort durch Einrückungen und Zeilenumbrüche lesbar formatiert.
  • userIP: Die IP des anfragenden Rechners wird übermittelt, um die Abfragelimits, derzeit 1.000 pro Tag, überwachen zu können.

Google+ API: Eine Beispielanwendung

Um den Start in die Verwendung der Plus-API zu vereinfachen, bietet Google ein Starterkit namens “Google-Plus-PHP-Starter” an. Teil des Starterkits ist eine Schritt für Schritt Anleitung in die Verwendung der OAuth2-Authentifizierung, sowie eine PHP-Bibliothek namens Google-API-PHP-Client.

Die Techblogger von W3Resource haben sich die Mühe gemacht und erstellten eine kleine Beispielanwendung, die sich hier als Demo ansehen lässt. Dabei füllten sie das Starterkit mit Leben, so dass wir hier nicht alles from scratch bauen müssen, sondern auf das Beispiel der Kollegen zurück greifen.

Schritt 1: API Key erstellen

Der erste Schritt führt uns in die Google API Console. Dort loggen wir uns ein und klicken auf “Create Project”.

Google+ API Einstieg für Entwickler, Screenshot

In der Liste der Services mit API klicken wir auf den Schieberegler, um die API-Nutzung einzuschalten.

Als nächstes gilt es die Bedingung mit “I agree” abzunicken, woraufhin der Schalter an der Google+ API auf On wechselt.

Ein Klick auf API Access führt uns zur Einrichtungsprozedur für eine OAuth 2.0 Client ID.

Im Formular Client ID vergeben wir einen Namen für die App und laden ein Logo hoch, wenn wir das wollen.

Der nächste Bildschirm informiert uns über die generierten Keys, die wir benötigen, um API Calls abzusetzen.

Schritt 2: Erstellen einer einfachen PHP-Anwendung mit dem Google+-Starterkit

Um die generelle Funktionsweise zu demonstrieren, erstellen wir ein Formular, in das der Verwender eine Google-ID eintippen kann. Die so erhaltene ID geben wir dann an die API weiter, die uns letztendlich die öffentlichen Informationen zum Profil auflisten wird.

Zunächst das Formular:

<!doctype html>
<html>
<head>
<title>Google + API example</title>
</head>
<body>
<p>Insert an ID : </p>
<form method="POST" action="example.php">
<input type="text" name="id" /><br />
<input type="Submit" name="submit" value="Submit" />
</form>
</body>
</html>

Um den Formularinhalt über die API zu übermitteln und zu verarbeiten, wird der Google API PHP Client benötigt, der Teil des Starterkits ist, aber hier auch separat heruntergeladen werden kann. Nach dem Download speichern wir den Client und laden die Ordnerstruktur in den gleichen Ordner hoch, in dem auch die HTML- und PHP-Files unserer Anwendung liegen werden.

Unsere Beispielanwendung sieht so aus. Wenn ihr das Beispiel nachbauen wollt, müsst ihr natürlich etliche Anpassungen vornehmen. Neben den Pfaden sind die folgenden Angaben auf den tatsächlichen Anwendungsfall anzupassen:

  • clientID
  • ClientSecret
  • RedirectUri
  • DeveloperKey

Alle diese Angaben befinden sich gesammelt im oberen Teil des Code, ab Zeile 28. Die RedirectUri muss in der API Console beim entsprechenden Projekt ebenfalls angegeben werden.

<?php
/* * Copyright 2011 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
require_once 'google-api-php-client/src/apiClient.php';
require_once 'google-api-php-client/src/contrib/apiPlusService.php';

session_start();

$id = $_POST['id'];

$client = new apiClient();
$client->setApplicationName("Google+ PHP Starter Application");
// oauth2_client_id, oauth2_client_secret, and to register your oauth2_redirect_uri.
$client->setClientId('357142505911.apps.googleusercontent.com');
$client->setClientSecret('LbJa7YOJ1Th-e-TOosEJxI4A');
$client->setRedirectUri('http://www.w3resource.com/API/google-plus/example.php');
$client->setDeveloperKey('AIzaSyD3stLpkt7jJw0mkMsJtM9m_zrgg26rrsI');
$plus = new apiPlusService($client);

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($id);

$optParams = array('maxResults' => 100);
$activities = $plus->activities->listActivities($id, 'public', $optParams);

// The access token may have been updated lazily.
$_SESSION['access_token'] = $client->getAccessToken();
} else {
$authUrl = $client->createAuthUrl();
}
?>

<!doctype html>
<html>
<head><link rel='stylesheet' href='style.css' /></head>
<body>
<header><h1>Google+ Sample App</h1></header>
<div>

<?php if(isset($me) && isset($activities)): ?>
<div>
<p><a rel="me" href="<?php echo $me['url'] ?>"><?php print $me['displayName'] ?></a></p>
<p><?php print $me['tagline'] ?></p>
<p><?php print $me['aboutMe'] ?></p>
<div><img src="<?php echo $me['image']['url']; ?>?sz=82" /></div>
</div>
<div>Your Activities:
<?php foreach($activities['items'] as $activity): ?>
<div>
<p><a href="<?php print $activity['url'] ?>"><?php print $activity['title'] ?></a></p>
</div>
<?php endforeach ?>
</div>
<?php endif ?>
<?php
if(isset($authUrl)) {
print "<a class='login' href='$authUrl'>Connect Me!</a>";
} else {
//print "<a class='logout' href='?logout'>Logout</a>";
}
?>
</div>
</body>
</html>

Das kleine CSS als Ergänzung:

/*
* Copyright 2011 Google Inc.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
body {
font-family: Arial,sans-serif;
margin: auto;
}

.box {
border: .5em solid #E3E9FF;
-webkit-box-orient: vertical;
-webkit-box-align: center;
-moz-box-orient: vertical;
-moz-box-align: center;
display: block;
box-orient: vertical;
box-align: center;
width: 750px;
height: auto;
margin: auto;
padding: 10px;
word-wrap: break-word;
text-overflow: ellipsis;
}

.me {
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
width: 700px;
}
.activities {
-webkit-box-flex: 2;
-moz-box-flex: 2;
box-flex: 2;
width:100%;
}

.activity {
margin: 10px;
}

header {
color:#000;
padding:2px 5px;
font-size:100%;
width: 400px;
margin: auto;
text-align: center
}

header h1.logo {
margin:6px 0;
padding:0;
cursor:pointer;
font-size:24px;
line-height:20px;
}

.login {
font-size: 200%;
display: block;
margin: auto;
cursor: pointer;
text-align: center;
font-weight: bold;
color: #2779AA;
line-height: normal;
}

.logout {
font-weight: normal;
padding-top: -5px;
margin-top: 0px;
}

Wenn alle Änderungen erfolgreich vorgenommen wurden, können wir den Browser mit der URL unserer Formulars bestücken und die kleine Applikation ablaufen lassen. Nach dem ersten Aufruf muss einmal die OAuth-Authentifizierung erfolgen. Danach können beliebige öffentlich zugängliche Profilinformationen abgerufen werden.

Google+ API Beispiel: So sieht der Output der Beispielanwendung aus

Wollt ihr es nicht selber nachbauen, sondern nur die Funktionalität testen, könnt ihr das obige Beispiel live in Aktion bei W3Resource sehen.

Die offizielle t3n Google+ Page ist unter folgendem Link erreichbar:

Button t3n Google+ Page, unter diesem Link erreichbar

Weiterführende Links:

Bitte beachte unsere Community-Richtlinien

3 Reaktionen
Thomas

Wenn ich die Google APIs Client Library for PHP, wie auf http://code.google.com/p/google-api-php-client/ in Punkt 2 beschrieben, testen möchte, erhalte ich folgende Fehlermeldung:

Fatal error: Uncaught exception 'Exception' with message 'The Google PHP API Library needs the CURL PHP extension' in..

Woran kann das liegen?

Viele Grüße
Thomas

Antworten
Dieter Petereit

Hehe. Ja, schnell ist manchmal relativ ;-)

Antworten
Thomas Weise

Vielen Dank für den, wie ich finde, übersichtlichen "Schnelleinstieg".

Antworten

Schreibe einen Kommentar zu Thomas Abbrechen

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung