Archiv der Kategorie ‘Social Media‘

 
 

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.

Ich lade zu Google+ ein!

Google macht sein Netzwerk Google+ weiter offen und ermöglicht nun, andere per Link einzuladen.

Das möchte ich auch nutzen und verteile mit diesem Link meine 150 Einladungen:
Google+ Mitglied werden

Update: Was ist Social Media?

2009 habe ich bereits eine Sammlung von Definitionen zu Social Media veröffentlicht. Im Rahmen meiner Masterarbeit bin ich auf eine weitere gestoßen:

Unter Social Media versteht man Internetanwendungen, die auf den bestehenden ideologischen und technologischen Grundlagen des Web 2.0 aufbauen […]. Das Teilen von Inhalten sowie Kommunikation und Kollaboration stehen bei diesen webbasierten Anwendungen im Vordergrund

Quelle:
Bauer, Patrick; Hofmann, Ute; Ehle, Julia (2010): Kollaboration und Kooperation mit Social Media in verteilten Forschungsnetzwerken. In: Schewa Mandel, Manuel Rutishauer und Eva Seiler Schiedt (Hg.): Digitale Medien für Lehre und Forschung, Bd. 15. Münster, New York, München, Berlin: Waxmann, S. 252–262.

PDF ist verfügbar unter: Digitale Medien für Lehre und Forschung

Für eine Zusammenfassung was unter Web 2.0 zu verstehen ist, kann in den Artikel von Tim O’Reilly “What is Web 2.0?” empfehlen.

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.

Die Geschichte von Social Media

Auf Skloog wurde eine Grafik über die Geschichte von Social Media veröffentlicht. Ob man nun E-Mail oder den Chat über IRC als Social Media betrachten kann, darüber läßt sich streiten. Die Grafik selbst ist aber ganz interessant:

History of Social Media