Authentication mit Facebook Connect
Facebook 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.
Jetzt geht es um die Grundlagen, wie man mit Java einen Connect über Facebook realisiert.
Für eine kleine Beispielanwendung sind folgende Schritte notwendig:
1. Anwendung bei Facebook registrieren.
2. Grundeinstellungen einer internetbasierten Anwendung festlegen.
3. Entwicklung mit facebook-java-api.
Registrierung der Anwendung
Für die Registrierung einer Anwendung ist natürlich ein Profil bei Facebook nötig. Hat man das, kann man eine neue Anwendung erstellen. Es erfolgt die Vergabe eines Namens und schon findet man sich auf der Einstellungsseite wieder.
“Allgemeines” zeigt einen API-Schlüssel und ein Geheim, im englischen API-Key und secret. Diese beiden Werte benötigt man für die Entwicklung.
Facebook bietet eine Fülle von Einstellungen für die Anwendung. Wichtig für den Einstieg sind Angaben unter den Punkten “Authentifizierung” und “Leinwand”.
Bei beiden Punkten gibt man eine Callback-Url an: ein Link auf die Facebook nach erfolgreicher Anmeldung zurückleiten soll.
Entwicklung
Der Ablauf der Authentifizierung ist recht simple. Man bietet dem Benutzer einen Login-Link oder -Button an, der ihn zu Facebook führt. Nach erfolgreicher Anmeldung wird er zurück geleitet und über die URL ein Token mitgeliefert. Über diesen Token wird der Benutzer eindeutig identifiziert.
Das Beispiel habe ich mit Java Struts entwickelt, funktioniert aber auch mit JSP, JSF oder anderen Frameworks.
Zuerst wird der Login-Link mit dem API-key und dem secret erzeugt.
FacebookXmlRestClient client = new FacebookXmlRestClient (apiKey, secretToken);
String token = client.auth_createToken();
String url = "http://www.facebook.com/login.php?api_key=" + apiKey + "&v=1.0";
request.setAttribute("facebookUrl", url);
apiKey und secretToken sind die oben genannten Variablen, die man bei der Registrierung erhalten hat.
Auf der JSP-Seite kann man dann ein Bild verlinken oder den Login-Button von Facebook generieren lassen. Dafür bietet Facebook eigene Connect Login Buttons an.
<a href="<bean:write name='facebookUrl'/>"> <img src="http://wiki.developers.facebook.com/images/6/6f/Connect_iphone.png" border="0"> </a>
<a href="<bean:write name='facebookUrl'/>" onclick="FB.Connect.requireSession(); return false;" class="fbconnect_login_button FBConnectButton FBConnectButton_Small"> <span id="RES_ID_fb_login_text" class="FBConnectButton_Text"> Connect with Facebook </span> </a>
Klickt dann der Benutzer auf den Link wird er zu Facebook umgeleitet. Er kann sich dann mit seinen Daten anmelden, oder falls er noch keinen Account hat, auch gleich registrieren.
Nach der Anmeldung wird er auf die Callback-URL umgeleitet.
Über einen Parameter liefert Facebook den Autentifizierungstoken mit.
Diesen ließt man aus und hat dann Zugriff auf die Profildaten des Benutzers oder anders herum, man hat den Benutzer über Facebook auf seiner Anwendung authentifiziert.
Die Action-Klasse ließt den request aus und authentifiziert den Benutzer.
FacebookXmlRestClient client = new FacebookXmlRestClient(apiKey, secretToken);
String authToken = request.getParameter("auth_token");
client.auth_getSession(authToken);
Nun hat man Zugriff auf die Facebookdaten des Benutzers. In diesem Beispiel gebe ich den Namen und den Link zum Profilbild aus
long myid = client.users_getLoggedInUser();
Collection users = new ArrayList();
users.add(myid);
EnumSet fields = EnumSet.of(ProfileField.NAME, ProfileField.PIC);
Document d = client.users_getInfo(users, fields);
String myname =
d.getElementsByTagName("name").
item(0).getTextContent();
String pic =
d.getElementsByTagName("pic").
item(0).getTextContent();
System.out.println("Name: " + myname);
System.out.println("Pic: " + pic);
Quellcode
Hier der Quellcode der Struts Action-Klasse und der JSP:
FacebookConnectAction.java
jsp-Datei: index.jsp
Weiterlesen
Entwicklung
API-Wiki von Facebook
Facebook Developer Wiki
Homepage von facebook-java-api
facebook-java-api
Drei englischsprachige Artikel über Facebook Connect mit Java
Building a Facebook Application in 15 minutes
Logging in with Facebook Java API
Facebook authentication in Java
Blog-Artikel
Ein Blogartikel über Nutzen und Vor- und Nachteile von Facebook Connect
Facebook Connect verbindet alles
Vergleich zwischen Facebook Connect und Sign in with Twitter
Facebook Connect vs. Sign in with Twitter: Fight!
Artikel von netzwertig über Single-Sign-On im Web 2.0
Single-Sign-On: 2009 ist das Jahr des Durchbruchs
Beispiele für Facebook Connect
Apple nutzt in einer App Facebook Connect um Statusmeldungen abzusetzen
Facebook Connect Beispiel von Apple
Ein Plugin für Wordpress, um Blog Besucher über Facebook zu registrieren
Facebook Connect Wordpress Plugin
Das Nachrichtenportal verbindet sich mit Facebook. Kommentare auf bild.de können im Facebook Profil angezeigt werden oder man kann Artikel seinen Freunden empfehlen
BILD.de vernetzt sich mit Facebook
Ähnliche Artikel
Facebook Freunde mit der facebook-java-api
Twitter, Twitter4J und OAuth






21. Februar 2010 um 00:18
[...] Authentication mit Facebook Connect Facebook Freunde mit der facebook-java-api [...]
23. Januar 2011 um 12:48
[...] 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. [...]