LimeSoda Blog ☰ Zeige Kategorien

Die Google+ API ist da!

Ende Juni 2011 wurde Googles soziales Netzwerk Google+ veröffentlicht. Bereits vor einigen Wochen habe ich mich für die Google+ Developer Group angemeldet, um neue Informationen für Entwickler zu erhalten. Gestern Abend um 20:57 Uhr hat mich ein Mail mit Absender „Google+ Platform“ erreicht – es war endlich so weit:

Getting Started on the Google+ API

Greetings developers,

Thank you for showing your interest in the Google+ platform on our developer interest form. We promised to let you know when we had more details to share. Well, that time has come…

Today, we’re launching the first of the Google+ APIs. This initial API release is focused on public data only — it lets you read information that people have shared publicly on Google+. Read our blog post for more details.

Also, we’re happy to introduce a new Google+ developers site. This will be the place to go for our policies, terms, discussions with other developers, access to documentation, tools that make development on the Google+ platform easier and more fun, and of course, the place where announcements concerning new releases will be made.

We’re looking forward to seeing what you build with the API. Today is just the beginning, and your work will affect what comes next, so go ahead and get started.

Happy coding!

– The Google+ platform team

 

Es wurde als gleich Zeit für einen ersten Test. Den Weg dorthin und das Ergebnis möchte ich euch nicht vorenthalten. Vorweg: Mein Test wurde mit der Google+ PHP API durchgeführt.

Projekt einrichten und Library downloaden

Zur Vorbereitung habe ich ein neues Verzeichnis am Server angelegt. In dieses Verzeichnis kommen die Client Library sowie Sample Files.

Schritt 1: Client Library downloaden

Auf dieser Seite kann man die Google+ API in der Programmiersprache seiner Wahl downloaden. Ich habe „Google APIs Client Library for PHP (beta)“ (Datei: google-api-php-client-0.4.4.tar.gz) heruntergeladen. Der Inhalt des Archivs wird entpackt und der Ordner “google-api-php-client“ in dem zuvor erstellen Verzeichnis für mein Projekt abgelegt. Punkt 3 der Anleitung (“Include and use the library in your project”) lassen wir mal außen vor, da wir gleich noch das Starter Project hinzufügen.

Schritt 2: Google+ PHP API Starter Project downloaden

Hier kann man das Google+ PHP API Starter Project downloaden. Die Datei google-plus-php-starter.zip wird entpackt und die Dateien in mein Projektverzeichnis verschoben.

Die README Datei gibt dabei noch einmal wertvolle Hinweise betreffend Server-Anforderungen:

PHP 5.2.x or higher
PHP Curl extension
PHP JSON extension
Google API PHP Client

Die Einrichtung ist fast geschafft.

Um mit der Google + API nun auch auf Google+ Daten zugreifen zu können ist es notwendig, die API zu aktivieren  sowie die Anwendung auf Google+ zu registrieren. Jede Anfrage an die Google+ API muss die App gegenüber Google identifizieren. Das ist über einen OAuth 2.0 Token und/oder den API Key der Anwendung möglich. Auf dieser Seite aktiviert man die API.

Aber halt, nicht so schnell!
Ruft man die Seite zum ersten Mal auf, wird man auf einen Screen „Start using the Google APIs console“ geleitet. Nach dem Click auf „Create project“ erscheinen die Google+ Platform Terms of Service, die man zuvor noch akzeptieren muss.

Jetzt aber:
Auf der folgenden Seite „All services“ nun die Google+ API aktivieren.
Danach im Menü links auf die Seite „API Access“ wechseln, auf welcher man die neue Anwendung hinzufügen kann.
Im unteren Bereich der Seite ist bereits der Simple API Access Key generiert. Diesen Key kann man allerdings nur für den Zugriff auf öffentliche Daten verwenden. Da man derzeit mit der Google+ API ohnehin nur auf öffentliche Daten zugreifen kann, könnte man mit dem Simple API Access Key auch weitermachen. Aber wir wollen mehr, was bedeutet: Wir wollen OAuth 2.0!

Google schreibt zu OAuth 2.0: „Requests to the Google+ API for non-public user data must be authorized by an authenticated user.”  Mit OAuth 2.0 kann man also (später, in einer hoffentlich bald erscheinenden weiteren Version der API) auch auf nicht-öffentliche Daten zugreifen.

Authorized API Access bekommt man mit einem Klick auf „Create an OAuth 2.0 client ID“. Hier weicht die Anleitung der README etwas vom tatsächlichen Formular ab.

Eingegeben wird auf Seite 1:

  • Name der Anwendung
  • Google Account: Derzeit automatisch mit dem eigenen Profil verlinkt. Will man also nicht mit seinem eigenen Account sondern z.B. mit dem der Firma eine App anlegen wäre jetzt der Zeitpunkt um sich aus- und neu einzuloggen ;-)
  • Anwendungslogo: Link zum Logo. Maximale Größe 120×60 Pixel.

Seite 2:

  • Anwendungstyp: Web-Anwendung (via Browser) oder installierte Anwendung (z.B. auf einem PC oder Smartphone)
  • Seite/URL: Hier gibt man den Link zur Anwendung an: z.B. http://localhost/googleplus/index.php Nicht wundern: Verlässt man das Textfeld, wird die Rediret URI aktualisiert sowie aus dem Webseiten-Textfeld alles hinter dem Domainnamen entfernt.
  • „Create client ID“ und fertig.

Die Client ID und Simple API Access Daten werden nun in die index.php (Zeile 26-29) des PHP Starter Projekts übertragen. Dannach die index.php speichern und aufrufen und schon kann es losgehen.

Meine Freude wurde zu diesem Zeitpunkt gleich wieder etwas gedämpft, da mir drei Warnings und eine Exception ausgegeben wurden (warning: file_exists() [function.file-exists]: open_basedir restriction in effect und eine Exception aus google-api-php-client/src/cache/apiFileCache.php).

Der Grund: Auf dem Server ist der PHP safemode aktiviert und die Google+ API versucht außerhalb des home-Verzeichnisses in /tmp zu schreiben.
Ich machte mich auf die Suche um das Verzeichnis zu ändern und wurde sehr rasch im Ordner google-api-php-client/src fündig.
In Zeile 57 der config.php ist der Ort für das temp-Verzeichnis deklariert:
‚ioFileCache_directory‘  => (function_exists(’sys_get_temp_dir‘) ? sys_get_temp_dir() . ‚/apiClient‘ : ‚/tmp/apiClient‘)
Die Zeile war schnell angepasst und nun stand meiner App nichts mehr im Weg.
Merke: Google+ API und safemode bedeutet temp-Pfad ändern.

Die erste Google+ API App

Die Sample-App verfügt über einen Link zur Authentifizierung mit Google+, um der Anwendung Zugriff zu gewähren. Auf der Folgeseite erscheint nochmals der App-Name sowie die Mailadresse, mit welcher die App angelegt wurde. In meinem Fall meine google-Mailadresse. Für Firmenprojekte ist es also besser, die Apps mit der Firmen-Mailadresse anzulegen.

Die App listet auf der Folgeseite den Namen, das Profilbild und die öffentlichen Posts des Users auf sowie einen „Logout“-Link.
Zugreifen kann man derzeit auf Personendaten sowie Aktivitäten. Ich habe hier als ersten Test ein paar weitere Datenfelder eingefügt, was auch problemlos funktioniert hat.

Einen kleinen Mehrwert musste ich nun doch irgendwie generieren. Deshalb habe ich noch die Abfrage der „+1“ und re-shares für öffentlichen Beiträge hinzugefügt.
Bernhard hat schon unglaubliche 68 +1 und 22 Re-Shares bei seinen öffentlichen Posts erhalten:

Was mir konkret noch aufgefallen ist, ist die fehlerhafte Darstellung bei Benutzern ohne Profilbild.
Das Platzhalterbild NoPictureDark65.jpg gibt es nicht mit der Option „size“ (Voreinstellung „sz=82“)Option. Weshalb hier kein Bild angezeigt wird. Die Google+ Entwickler haben anscheinend auch alle Profilbilder ;-)

Nützliche Links zur Google+ API:
Google+ Blog
Google APIs Explorer
Google+ Developer Platform
Client Library für verschiedene Programmiersprachen downloaden
Verfügbare Datenfelder für Personen
Verfügbare Datenfelder für Aktivitäten – Liste
Verfügbare Datenfelder für Aktivitäten – Detail

Kommentare

  • Hmm die Fehlermeldung ist mittlerweile auch weg, allerdings bekomm ich eine, mit der ich absolut nichts anfangen kann.

    Fatal error: Uncaught exception ‚Google_ServiceException‘ with message ‚Error calling GET https://www.googleapis.com/plus/v1/people/me: (403) Access Not Configured‘ in /var/www/web1/html/grow/test/src/io/Google_REST.php:66 Stack trace: #0 /var/www/web1/html/grow/test/src/io/Google_REST.php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 /var/www/web1/html/grow/test/src/service/Google_ServiceResource.php(177): Google_REST::execute(Object(Google_HttpRequest)) #2 /var/www/web1/html/grow/test/src/contrib/Google_PlusService.php(205): Google_ServiceResource->__call(‚get‘, Array) #3 /var/www/web1/html/grow/test/examples/plus/index.php(47): Google_PeopleServiceResource->get(‚me‘) #4 {main} thrown in /var/www/web1/html/grow/test/src/io/Google_REST.php on line 66

    Antworten
    • Hi,
      Ich kenne den Fehler leider nicht, schlage aber vor:
      * Kontrolliere deinen API-Key
      * Check die Authentifizierung – alle API calls benötigen ein OAuth 2.0 token oder einen API Key.
      siehe https://developers.google.com/+/api/

      Alles Gute!

      Liebe Grüße,
      Anna

      Antworten
  • Moin,

    auf was hast du den Pfad denn geändert bzw. welchen Teil davon hast du geändert?

    MfG

    Antworten
    • Hallo,
      Meinst du den temp-Pfad?
      Ich habe in der config.php (Zeile 57) den Pfad auf mein temp-Verzeichnis geändert.
      Beispiel:
      ‚ioFileCache_directory‘ => ‚/absoluter/pfad/zu/deinem/verzeichnis/tmp‘

      Liebe Grüße,
      Anna

      Antworten

Hinterlasse einen Fingerabdruck für die Ewigkeit: Ein Kommentar bei LimeSoda!

(*) Pflichtfeld

Bewirb dich bei uns!

LimeSoda.
Digitalagentur in Wien.

Bewirb dich jetzt!
Anna Völkl

Verpasse nicht den nächsten Blog-Post von Anna!

Jetzt zum LimeSoda-Newsletter anmelden