Archiv der Kategorie ‘API‘

 
 

Google von der Kommandozeile

Google hat ein Tool vorgestellt, mit dem einige Google-Services von der Kommandozeile aus bedienen können. Unterstützt werden bis jetzt:

  • Blogger
  • Calendar
  • Contacts
  • Docs
  • Picassa
  • YouTube

Unterstützt werden u.a. Eingaben wie “post” zur Veröffentlichung von Content, “list” zur Auflistung von Posts oder “tag” zur Kennzeichnung (taggen) von Content.

Die ExampleScripts zeigen die Einsatzmöglichkeiten für die unterschiedlichen Dienste (siehe auch das Manual)

Das Python-Tool wurde unter einer OpenSource Lizenz bei Google Code veröffentlicht.

Neue Facebook-App


Meine zweite Facebook-Anwendung ist seit kurzem Online.
Die Anwendung blog365 – fotos by Stefan Grundmann zeigt Bilder aus einem Fotoblog.
Der Blog wird von einem guten Freund betrieben. Er hat sich vorgenommen ein Jahr lang jeden Tag ein Bild zu bloggen. Er ist nun seit über einem dreiviertel Jahr dabei und die Bilder sind wirklich sehenswert; von stilvollen Naturkompositionen, auf schwarz-weiß reduzierte Blumenstilleben oder schnellen und charakteristischen Streetfotografien ist vieles dabei.
Die Anwendung greift auf die Bilder zu, extrahiert sie und man kann sie innerhalb von Facebook ansehen.

Gut, eigentlich hat die Anwendung so keinen Sinn, Bilder können bei Facebook auch sehr einfach über die Pinnwand veröffentlicht werden. Sie ist aber eine weitere beispielhafte Anwendung und den Quellcode werde ich hier demnächst noch hier mit Erklärungen veröffentlichen.

Facebook Authentication & Authorization mit Java

Meine erste Facebook-App läuft jetzt seit gut einer Woche und hat bereits über 30 “Gefällt mir”. In diesem Artikel möchte ich darüber schreiben, wie ich die Authentifizierung von Benutzern bei Facebook gelöst habe.

In einem Artikel vor gut einem Jahr habe ich noch die facebook-java-api genutzt. Die Weiterentwicklung ist etwas eingeschlafen, deshalb war ich auf der Suche nach einer anderen API. Fündig geworden bin ich bei der RestFB, ein Open Source Framework, welches direkt auf die GraphAPI von Facebook zugreift.

Der erste Schritt bei der Entwicklung einer Anwendung auf Facebook ist die Anwendung selbst anzulegen. Man erhält dann eine Anwendungsnummer und zwei Schlüssel für die Authentifizierung, den API-Schlüssel und den Anwendungs-Geheimcode. Wichtig ist noch die Canvas-URL unter Facebook-Einbindung in den Einstellungen der Anwendung festzulegen, sowie die URL der Anwendung, die Canvasseite.

Den gesamten Prozess der Authentifizierung hat Facebook ganz gut beschrieben.

Bei dem ersten Aufruf greift meine Anwendung (in Struts entwickelt) als erstes auf die Canvas-URL zu.

Folgendes passiert dann. Man holt sich den Parameter “signed_request” und verarbeitet ihn. Bei dem ersten Aufruf muss der Nutzer sich noch authentifizieren und der Anwendung die Berechtigung erteilen, auf die eigenen Profildaten zugreifen zu können.
Es wird dann erstmal aufgerufen:

if (ret.getOauth_token() == null){
    return new ActionForward(authUrl, true);
}

Es erfolgt einer Weiterleitung auf die Authentifizierungs-URL von Facebook.
Die authUrl sieht so aus:

"https://graph.facebook.com/oauth/authorize" +
"?client_id=123456789" +
"&redirect_uri=http://localhost:8080/mudflat/apps/facebookauth.do?do=authSucess" +
"&scope=user_birthday";

wobei die client_id die Anwendungsnummer der Anwendung ist und unter scope die Berechtigungen stehen, die der Anwendung erteilt werden sollen. Welche Berechtigungen möglich sind, steht hier: Permissions Reference.
Der Benutzer kann die Anwendung nun hinzufügen und wird dann zur redirect_uri weitergeleitet.
Die Weiterleitungsadresse macht bei mir nichts anderes, als auf die eingebettete Anwendung bei Facebook weiterzuleiten (Canvasseite)

public ActionForward authSucess(
		ActionMapping mapping,
		ActionForm form,
		HttpServletRequest request,
		HttpServletResponse response) {		

return new ActionForward("http://apps.facebook.com/smd_auth_example", true);
}

Nun wird der Benutzer wieder zur Canvas-URL weitergeleitet.
Da diesmal gilt
authToken != null
kann dieser verarbeitet und der Benutzer authentifiziert werden.

Facebook schickt den Authentifizierungs-Token verschlüsselt im signed_request-Parameter mit.
Wie dieser verarbeitet wird, habe ich mir hier abgekupfert: Parsing signed_request in Java
Die Methode checkSignature(rawpayload, sig) überprüft dann, ob der Anwendungs-Geheimcode stimmt und stellt damit sicher, dass die Anwendung wirklich von Facebook aufgerufen wurde.

String sigreq = request.getParameter("signed_request");

int idx = sigreq.indexOf(".");
byte[] sig = new Base64(true).decode(sigreq.substring(0, idx).getBytes());
String rawpayload = sigreq.substring(idx+1);
String payload = new String(new Base64(true).decode(rawpayload));

/* parse the JSON payload and do the signature check */
FacebookRequest ret = new Gson().fromJson(payload, FacebookRequest.class);
/* check if it is HMAC-SHA256 */
if (!ret.getAlgorithm().equals("HMAC-SHA256")) {
    System.out.println("Fehler Algorthimus");
}
/* then check the signature */
checkSignature(rawpayload, sig);

if (ret.getOauth_token() == null){
    return new ActionForward(authUrl, true);
}

Ab diesem Punkt ist die Authentifizierung abgeschlossen und man kann mit der RestFB-API auf die Graph-API zugreifen:

FacebookClient facebookClient = new DefaultFacebookClient(ret.getOauth_token());
String query = "SELECT name FROM user WHERE uid=220439";
List users = facebookClient.executeQuery(query, User.class);
for (int i=0;i<users.size();i++){
    User u = users.get(i);
    System.out.println(u.getName());
}

Nun noch mal eine kurze Zusammenfassung:

  • Anwendung bei Facebook erstellen und die Canvas URL und die Canvasseite festlegen
  • Beim ersten Aufruf Weiterleitung auf die authURL und Parameter festlegen
  • Durchführung der Authentifizierung mit Entschlüsselung des signed_request Parameters und Bestätigung des Anwendungs-Geheimcodes.

Hilfreich bei der Entwicklung ist noch, wenn man sich etwas in die Dokumentationen von Facebook einliest

Und hier der komplette Quellcode

Ansonsten, bei Fragen einfach melden :-)

Erste Facebook Anwendung Online


Seit einigen Tagen läuft meine erste Anwendung auf Facebook. “Geburtstage” zeigt in einer kompakten Übersicht die Geburtstage aus der Freundesliste.
In einigen Tagen veröffentliche ich dann auch Teile des Quellcodes, dazu einige Erläuterungen, wie man eine Anwendung einbindet und wie man Benutzer authentifiziert.

Entwickler-Magazin: Soziale Netzwerke 2.0

Am 08.12.2010 ist das neue Entwickler-Magazin erschienen. Ein Arbeitskollege und ich haben für diese Ausgabe einen Artikel geschrieben:
Soziale Netzwerke 2.0 – Social Media API
Der Artikel gibt eine Einführung von der Bedeutung von offenen Schnittstellen und wie Facebook und Twitter u.a. dadurch zu Marktführern geworden sind. Weiterhin wird der Begriff Social Media API erläutert und an einigen Einsatzszenarien demonstriert, was mit der Verknüpfung von Plattformen über die Schnittstellen möglich ist.
Im zweiten Teil wird OpenSocial vorgestellt und welche Ziele das Konsortium hinter dieser Entwicklung hat. Ein Beispiel zeigt einführend wie man plattformübergreifende Applikationen für Social Media Dienste entwickeln kann.

Der Artikel in dieser Ausgabe ist sozusagen eine Lightversion eines Artikels, welches wir für das Java Magazin geschrieben haben. Dieser wurde bereits in der Oktober Ausgabe veröffentlicht. Zusätzlich zu den oben beschriebenen Themen werden in der Java-Magazin-Version noch Einstiegsmöglichkeiten für Java Entwickler beschrieben und die Vielfalt an Frameworks und SDK’s, die für Java existieren, gezeigt.

Für mich persönlich war es die erste Veröffentlichung in einem Fachmagazin und besonders gefreut hat mich, dass die Redakteurin vom Java Magazin über diesen Blog auf mich aufmerksam geworden ist.

Gründe für eine offene Schnittstelle

John Musser von ProgrammableWeb nennt fünf Gründe, warum sich der Einsatz von offenen Schnittstellen (”Open APIs”) für Unternehmen lohnt:

Geld verdienen
60% von neuen eBay Auktionen werden über die eBay API eingestellt. Das Unternehmen verdient bei jeder Transaktion darüber mit.

Geld sparen
Auf der anderen Seite können Unternehmen Geld sparen, wenn sie andere APIs nutzen. Die Amazon S3 API kann Firmen helfen, ihre Speicherkosten zu senken.

Markenaufbau
Google hat mit der eigenen Google Maps API ein Mashup entwickelt, nämlich Google Maps, welches nicht nur eine Bereicherung für das gesamt Web war, sondern auch eine unglaubliche Verbreitung des Googles Logos gebracht hat.

Der Weg in die Cloud
Salesforce bietet mit der Salesforce.com API eine komplette Entwicklungsumgebung für Cloud-Anwendungsentwicklung zur Verfügung. Für andere Unternehmen ist das ein günstiger und schneller Einstieg in die Cloud.

Plattformübergreifend
Hat man bereits ein gutes Produkt oder Service kann eine API den Weg für andere Plattformen öffnen. Mit der Bereitstellung einer API steht der Service von Netflix auf über 200 verschiedenen Geräten zur Verfügung.

Wer sich noch weiter in die Thematik Open API Ecosystem einlesen will, dem sei die Präsentation von John Musser empfohlen

Weitere Links gibt es in meiner Linksammlung Developer Seiten von API Anbietern

Facebook Alternativen für Entwickler in Deutschland

Facebook ist Status Quo bei den sozialen Netzwerken, auch bei Entwicklern. Hier eine kleine Übersicht, welche Möglichkeiten die größeren deutschen Ableger bieten:
Nachdem man sich bei www.meinvz.net als Developer registriert hat (das wird noch per Hand freigeschaltet, kann also etwas Zeit in Anspruch nehmen) hat man Zugriff auf die Entwicklerseite. Im Developer-Wiki ist die Schnittstelle, die auf OpenSocial basiert, gut erläutert.

Daniel Grewing Xing hat schon seit längerem externe Anwendungen integriert. Man findet gut den DevBlog, da schreiben aber nur Entwickler von Xing, und das nicht mal sehr aktuell. Einen öffentlichen Zugang zur Schnittstelle sucht man vergeblich.

Auf Lokalisten.de werden Anwendungen mittels OpenSocial entwickelt. Die developer plattform ist komplett auf englisch, bietet aber über eine umfassende Dokumentation, Beispiele und einer Sandbox einen schnellen Einstieg in die Entwicklung.

Facebook Social Plugins

Der erste Einstieg in die Entwicklung von Facebook Anwendungen ist der Developer Bereich. Dort erhält man im Showcase einen Überblick wie große Webseiten Facebook einbinden und Plugins nutzen.
Für jede Kategorie (von News bis Sport) gibt Facebook Empfehlungen welche Widgets eingesetzt werden können.
Die “Empfohlene soziale Plug-ins” sind:

  • Activity Feed
    Der Feed zeigt die letzten Aktivitäten auf der eigenen Webseite
  • Comments
    Eine Textbox, in der Besucher Kommentare auf der Webseite hinterlassen können.
  • Facepile
    Das Plugin zeigt die Profilbilder der eingeloggten Besucher auf der Webseite
  • Like Button
    Klickt ein Besucher den “Gefällt mir” Button erscheint das in dessem News Feed auf Facebook mit einem Link zur Webseite.
  • Like Box
    Das Plugin zeigt in einem Überblick wie viele Leute die Webseite mögen, die letzten Posts und bietet einen “Like” Button.
  • Live Stream
    Facebook empfiehlt dieses Plugin für den Einsatz bei Live Events. Besucher können über das Plugin Kommentare und Statusupdates abgeben und die Aktivitäten anderer Besucher live mitverfolgen.
  • Login Button
    Analog zum Facepile Plugin zeigt dieses Plugin die letzten Logins auf der Webseite an.
  • Recommendations
    Das Plugin zeigt dem Besucher angepasste Empfehlungen. Ist er eingeloggt werden diese abhängig von den eigenen Kontakten erstellt. Alle anderen erhalten Empfehlungen abhängig von den Aktivitäten der Webseite auf Facebook.

Verwandte Beiträge
Facebook Freunde mit der facebook-java-api
Authentication mit Facebook Connect

Die wichtigsten Links im Überblick
Facebook Developer Seite: Die Einstiegsseite für Entwickler
Social Plugins von Facebook: Alle Plugins in der Übersicht
Facebooks Showcase: Beispiele für die Verwendung der Plugins

Facebook Freunde mit der facebook-java-api

facebook_connectEinen Einstieg in Facebookconnect mit der Java Library facebook-java-api hatte ich bereits gegeben.
In diesem Artikel ein kleines Beispiel, wie man nach dem Connect Zugriff auf die Freundesliste bekommt.

Den ganzen Beitrag lesen…

Authentication mit Facebook Connect

facebook_connectFacebook Connect ist eine Möglichkeit, Benutzer über ihren Facebook Account auf einer eigenen Webseite zu authentifizieren.
Welche Idee dahinter steckt, was Single-Sign-on ist und was für Möglichkeiten es bietet, kann man sich unter den Links am Ende des Artikels genauer anschauen.


Den ganzen Beitrag lesen…