Facebook-Anwendungen programmieren - Die Onleihe

20
Facebook-Applikationen programmieren, Fanpages erstellen, Open-Source-Tools einsetzen Mario Scheliga O REILLY Facebook- Anwendungen programmieren

Transcript of Facebook-Anwendungen programmieren - Die Onleihe

Facebook-Applikationen programmieren, Fanpages erstellen, Open-Source-Tools einsetzen

Mario ScheligaO’Reilly

Facebook-Anwendungen programmieren

| V

Inhalt

Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX

1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Kritik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Soziales Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Warum Facebook genutzt wird . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Die Facebook- Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Architektur der Facebook-Plattform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Open Source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Integrationspunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Interne Integrationspunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Externe Integrationspunkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4 Entwickeln mit Facebook. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Anwendung anlegen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Anwendungseinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Hallo Welt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Software Development Kits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Entwicklungswerkzeuge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Erfolgsfaktoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

VI | Inhalt

5 Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Welcome-Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88MP3-Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Facebook-Karaoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Facebook-Galerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Hosting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

6 Graph API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Löschen von Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Echtzeit-Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Objekte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

7 Open Graph Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Objekttypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228Ortsangaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228Kontaktinformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

8 REST-API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230Veraltete Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230batch.run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Anmeldung und Sicherheit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Benutzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Freunde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282Gruppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286Facebook-Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291Nachrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Veranstaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311Kommentare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320Fotos und Videos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324Notizen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Inhalt | VII

Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340FBML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345FQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

9 FQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350Allgemeine Angaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354Nachrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364Der Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Benutzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378Freunde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389Seiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392Veranstaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396Foto und Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Statistiken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

10 XFBML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416fb:activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416fb:live-stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418fb:recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418fb:like . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420fb:like-box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423fb:comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424fb:facepile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425fb:bookmark. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426fb:add-profile-tab* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427fb:login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428fb:login-button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428fb:name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429fb:profile-pic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431fb:share-button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

| 1

KAPITEL 1

Einführung

In diesem Kapitel erfahren Sie, was Facebook ist und was es allgemein ausmacht. Darü-ber hinaus versuchen wir zu erklären, warum Facebook verwendet wird, damit Sie dieseErkenntnisse für Ihr Vorhaben verwenden können. Facebook selbst ist nicht unumstrit-ten: Die wichtigsten Kritikpunkte werden in einem eigenen Abschnitt behandelt.

GrundlagenUrsprünglich war Facebook eine Website, mit der Studenten der Universität Harvardmiteinander vernetzt werden sollten, also eine Art digitales Jahrbuch, in dem man end-lich die Namen zu den Gesichtern erfährt und eine Art Steckbrief zur jeweiligen Personbekommt. Das Besondere daran war, dass es ein zentrales Studentenverzeichnis allerHarvard-Studenten sein sollte. An amerikanischen Colleges gibt es als Orientierungshilfefür die Studierenden sogenannte »Facebooks«, in denen die Kommilitonen abgebildetsind.

Facebook wurde von den Harvard-Studenten Mark Zuckerberg, Eduardo Saverin, DustinMoskovitz und Chris Hughes im Februar 2004 entwickelt. Zunächst konnten sich nurStudenten der Harvard-Universität anmelden. Da sich Facebook wachsender Beliebtheiterfreute, wurde das Angebot auf Studenten in den gesamten USA ausgeweitet, und späterauch auf Highschool-Schüler und Firmenmitarbeiter. Seit September 2006 konnten sichauch Studenten von Hochschulen in aller Welt bei Facebook anmelden, und im Laufeder Zeit wurde die Plattform für alle freigegeben.

Heute handelt es sich bei Facebook um das führende Social Network der Welt. In Zahlenausgedrückt, bedeutet das über 500.000.000 aktive Benutzer, wovon sich 50% fast täg-lich einloggen. Über 3 Milliarden Fotos werden jeden Monat von Benutzern hochgela-den. Jede Woche werden Milliarden von Nachrichten ausgetauscht, Veranstaltungenveröffentlicht und Inhalte miteinander geteilt. Der durchschnittliche Benutzer hat 130Freunde auf Facebook, ist Mitglied von 13 Gruppen, wird Fan von vier Seiten pro Monatund verbringt 55 Minuten täglich in Facebook. Facebook gibt es mittlerweile in mehr als70 Sprachen. Die meisten Übersetzungen der Plattform wurden von Freiwilligen aus der

2 | Kapitel 1: Einführung

Facebook-Community vorgenommen. Die Anmeldung bei Facebook ist für jeden Benut-zer kostenlos und erfordert nur wenige Angaben.

Derzeit gibt es in Facebook über 500.000 aktive Applikationen (Quellen: http://www.techiemania.com/facebook-history-and-statistics-in-a-nice-timeline.html, Stand Februar2010). Über 1.000.000 aktive Entwickler und Unternehmen arbeiten aktiv an der Ent-wicklung neuer Anwendungen, und das in über 180 Ländern. Das Internet zählte am 30.Juni 2010 1.966.514.816 Nutzer, von denen jeder vierte gleichzeitig Facebook-Nutzer ist.Wäre Facebook ein Land, dann hätte es nach China und Indien die drittgrößte Einwoh-nerzahl der Welt. Facebook ist also absolut relevant, und es verwundert nicht, dass soviele Entwickler damit in Berührung kommen.

Kritik Trotz großer Beliebtheit und stetigen Wachstums steht Facebook oft im Zentrum harterKritik. Das wohl größte Problem von Facebook in diesen Tagen ist der Umgang mit per-sönlichen Daten. Da Facebook bis heute nicht über ein kostendeckendes Geschäftsmo-dell verfügt und für die Benutzer kostenlos ist, versucht Facebook Einnahmen mit demWerbegeschäft zu generieren. Es verfügt über exklusive und hochwertige Daten, die fürdie Werbeindustrie von erheblicher Bedeutung sind. Facebook speichert unter anderemnicht nur den Namen und die Kontaktdaten der Person, sondern auch Alter, Geschlecht,

Abbildung 1-1: Startseite von Facebook.com für nicht angemeldete Benutzer

Kritik | 3

Lieblingsbeschäftigungen, Wohnort, politische Überzeugung, Lieblingsbücher und-filme sowie Bildungsstand und auch Daten über persönliche Beziehungen. Früher wardas für Facebook-Benutzer kein Problem, da es umfassende Einstellungen für die Privat-sphäre gab und die Daten laut Nutzungsbedingungen von Facebook nur verwendet wer-den durften, solange man angemeldet war. Das änderte sich jedoch, als Facebook Anfang2007 erstmals personalisierte Werbung für mehr als 60 interessierte Konzerne anbot.Dabei sollten den Unternehmen die oben genannten Daten zur Verfügung gestellt wer-den. Später, im November 2009, änderte Facebook sogar seine Nutzungsbedingungendahingehend, dass es die Daten von Mitgliedern zeitlich unbegrenzt nutzen durfte, auchnach Löschung oder Deaktivierung des Nutzerkontos. Bei den Daten handelte es sichzum Beispiel um Fotos, Kommentare, Videos und Ähnliches. Das führte zu erheblichenProtesten von Benutzern, weshalb Facebook sich gezwungen sah, diese Änderungen wie-der rückgängig zu machen.

Im April 2009 stellte Facebook den Mitgliedern neue Nutzungsbedingungen zur Abstim-mung zur Verfügung. Die meisten Benutzer befürworteten die neuen Regelungen. DieInhalte bleiben nun im Besitz der Benutzer, jedoch erhält Facebook das Recht, diese kom-merziell zu nutzen und an Dritte weiterzugeben. Trotz der von den Mitgliedern angenom-menen geänderten Nutzungsbedingungen wird Facebook wegen seines leichtfertigenUmgangs mit persönlichen Daten und deren Verwertung und Sammlung immer wiederstark kritisiert. Zum Beispiel gibt es eine Funktion in Facebook, mit der man über seinE-Mail-Konto noch nicht gefundene Freunde auf Facebook finden kann. Hier steht Face-book im Verdacht, auch Daten von Nichtmitgliedern dauerhaft ungefragt zu speichern.

Zudem drang im Februar 2010 an die Öffentlichkeit, dass Facebook Daten von Personenspeichert, die sich bewusst dagegen entschieden haben, Facebook-Mitglied zu werden.Facebook bietet Nutzern von Smartphones die Möglichkeit, Ihre auf dem Telefon gespei-cherten Kontakte mit den Facebook-Kontakten zu synchronisieren. Dabei werden stan-dardmäßig alle Nach- und Vornamen, Telefonnummern, E-Mail-Adressen undGeburtstage hochgeladen und von Facebook gespeichert. Diese Art der Datenerhebungohne ausdrückliche Zustimmung verstößt zumindest in Deutschland gegen das geltendeRecht der informationellen Selbstbestimmung.

Im November 2009 veränderte Facebook die Standardeinstellungen bezüglich der Privat-sphäre dahingehend, dass möglichst viele Informationen zum Benutzer öffentlich sichtbarsind. Bestimmte Informationen wie Name, Profilfoto, Freunde und Gruppenzugehörigkeitsind seitdem immer öffentlich sichtbar, auch wenn der Benutzer zuvor andere Einstellun-gen vorgenommen hatte. Die früheren Schutzmöglichkeiten sind dabei ersatzlos entfallen.

Zuletzt, am 09.02.2010, wurden die Nutzungsbedingungen von Facebook sogar vomOberlandesgericht Köln indirekt bestätigt (Az.: 15 U 107/09). In diesem Fall hatte derBenutzer ein Foto von sich auf Facebook veröffentlicht. Dieses Foto wurde dann voneiner Personensuchmaschine gefunden und übernommen. Der Nutzer sah diesen Vor-gang als unzulässig an und klagte auf Unterlassung. Das Gericht wies die Klage jedochab. Durch das Hochladen habe der Nutzer konkludent sein Einverständnis erklärt. Jederkann über die Privatsphäreneinstellungen seines Benutzerkontos den Zugriff von exter-

4 | Kapitel 1: Einführung

nen Suchmaschinen ausschließen. Macht der Nutzer davon keinen Gebrauch, gibt erdamit zu verstehen, dass er mit der Veröffentlichung durch Dritte einverstanden ist.Zudem weisen die Nutzungsbedingungen von Facebook ausdrücklich darauf hin, dassDritte auf Profilinhalte zugreifen können.

Die Speicherung und Verwertung von Daten ist immer ein sehr umstrittenes Thema, unddie bisherigen Geschäftspraktiken von Facebook werfen sicherlich viele Fragen auf.Jedoch setzt Facebook alles daran, den unterschiedlichen Interessengruppen gerechtzuwerden. So wurde zum Beispiel Ende 2009 ein Sicherheitsbeirat ins Leben gerufen, mitdessen Hilfe Facebook die Sicherheitseinstellungen für die Benutzer prüfen will. Der Bei-rat setzt sich aus Vertretern der Organisationen Common Sense Media, ConnectSafety,WiredSafety, Childnet International und The Family Online Safety Institute (FOSI)zusammen. Facebook sieht die Gründung des Beirats als Teil einer umfassenden Strategiean. So unterzeichnete Facebook 2008 eine Vereinbarung mit 49 Generalstaatsanwälten,um Kinder vor Onlineverbrechern zu schützen. Außerdem beteiligt sich Facebook an derInternet Safety Technical Task Force (ISTTF), einer Gruppe von Internetunternehmen,Nichtregierungsorganisationen, Wissenschaftlern und Technikexperten, die eine sichereUmgebung für Kinder und Jugentliche im Internet schaffen will. Außerdem kooperiertFacebook mit MTV in der Aktion »A Thin Line« gegen digitalen Missbrauch und mitdem britischen Fernsehsender BBC in einer Kampagne gegen Cybermobbing.

Soziales NetzOft wird Facebook im Zusammenhang mit sozialen Graphen erwähnt. Der Begriff sozia-ler Graph wurde hauptsächlich von Marc Zuckerberg geprägt, einem der Facebook-Gründer. Er steht in Verbindung mit dem Begriff »soziales Netzwerk«. Ein soziales Netz-werk ist in der Soziologie ein Netzwerk, mit denen gegebene Interaktionsgeflechte abge-bildet werden, beispielsweise Bekanntschaften. Dabei bedient man sich unter anderemdes aus der Graphentheorie stammenden Graphen. Der Graph stellt eine Menge vonPunkten dar, die durch Linien verbunden werden können. Diese Punkte nennt man auch»Knoten« (nodes), die Verbindungen werden auch als »Kanten« (edges) bezeichnet.

Bei Facebook wären also die Personen Knoten und die Verbindungen zwischen ihnenKanten. Dabei würden wir laut Graphentheorie meist endliche, ungerichtete Graphenvorfinden, da die Menge der Knoten und Kanten endlich ist und die Verbindungen meistin beide Richtungen gehen. Möchte man seinen eigenen sozialen Graph visualisieren,kann man dazu eine Facebook-Anwendung nutzen. Die folgende Visualisierung wurdemit dem TouchGraph Facebook Browser erstellt und stellt ein typisches soziales Netz da.

Eine der wichtigsten Hypothesen im Zusammenhang mit sozialen Netzwerken ist dasvon Stanley Milgram 1967 geprägte »Kleine-Welt-Phänomen«. Nach seiner Hypotheseist jeder Mensch über eine überraschend kurze Kette von Bekanntschaften mit jedemanderen auf der Welt verbunden. Gerade in sozialen Netzwerken wie Facebook, Xingoder StudiVZ lässt sich dieses Phänomen beobachten. Der Effekt verstärkt sich durch dieneuen technischen Möglichkeiten, ohne die die Herstellung von Verbindungen zu ande-ren Personen wesentlich länger dauern würde.

Soziales Netz | 5

Eine Milchmädchenrechnung verdeutlicht das Prinzip. Wie zuvor erwähnt, hat derdurchschnittliche Facebook-Benutzer 130 Freunde. Wenn man davon ausgeht, dass derjeweilige Freund 50 Freunde hat, die man selbst noch nicht kennt, könnte man über ihnalso diese 50 kennenlernen. Das wären dann also Bekannte 2. Grades. Wie vieleBekannte 3., 4. oder 7. Grades hätte man dann? Die Milchmädchenrechnung geht so:

50 Bekannte 1. Grades (1x50)

2500 Bekannte 2. Grades (1x50x50)

125.000 Bekannte 3. Grades (1x50x50x50)

6.250.000 Bekannte 4. Grades (1x50x50x50x50)

312.500.000 Bekannte 5. Grades (1x50x50x50x50x50)

15.626.000.000 Bekannte 6. Grades (1x50x50x50x50x50x50)

Ab dem 6. Grad, also der 6. Ebene innerhalb des Netzwerkes, könnte man quasi jedenauf der Welt kennenlernen. Diese Milchmädchenrechnung diente – wie gesagt – nur derVeranschaulichung, jedoch konnten die Microsoft-Wissenschaftler Jure Leskovec und

Abbildung 1-2: Visualisierung eines beispielhaften sozialen Netzes

| 433

Index

Symbole* 350

AAbfragesprache

FQL 350Access Token 55, 144, 351Account Registration Data 41Activity Feed-Plugin 37admin.banUsers 244admin.getAllocation 245admin.getAppProperties 246admin.getBannedUsers 251admin.getRestrictionInfo 252admin.setAppProperties 252admin.setRestrictionInfo 253admin.unbanUsers 254Administrator 288Ads API 77Ajax 90Aktivität 31Aktivitätsmeldungen

abfragen 267löschen 267

Album 152, 399Eigenschaften 153

Amazon 6Analytics 42Android 71

Key-Hash 71manifest 71

Android SDK 71Anfrage 32Anhang 297Anmeldung 233Anwendung 53, 88, 240

anlegen 56Berechtigung 139, 236

Beschränkungen erfragen 245Dashboard 23Eigenschaften 246Eigenschaften setzen 252Entwicklungswerkzeuge 77Erfolgsfaktoren 80Hosting 120internationalisieren 45Liste der Migrationseinstellungen 254Migrationseinstellungen setzen 255nach demographischen Kriterien einschrän-

ken 253Nachricht direkt versenden 256Schnittstelle 72Über uns 58Verwaltungsseite 57

Anwendungsbenutzer 407Anwendungseinstellung 57Anwendungseinstellungen 45Anwendungsgeheimcode 255Anwendungstab 22Anwendungsverzeichnis 23, 241Apache 120Apache Hadoop 16Apache Hive 16API

Fehlermeldung 353Performance 411

Apple 44Application

Eigenschaften 156Verbindungen 156

application 364Application Content 408Application ID 55application secret 55application.getPublicInfo 241Applikation

mobile 44

434 | Index

aptitude 56Array 351

action_links 370affiliations 379affilliations 383attachment 362, 370comments 370current_location 379education_history 380email_hashes 381family 381hometown_location 379hs_info 380image_urls 376likes 370meeting_for 379meeting_sex 379positions 388privacy 370recipients 361work_history 380

auth.createToken 233auth.expireSession 234auth.getSession 234auth.promoteSession 235auth.revokeAuthorization 236auth.revokeExtendedPermission 237Autorisierung 137, 143

Bbatch.run 232Be Social 78Beitrag

kommentieren 299Benachrichtigung 148, 268Benutzer 378

ausschließen 244Berechtigung 351Checkin 133Dashboard 256E-Mail an 308Filter abfragen 294Fotoalbum 152gesperrte abfragen 251Information über Freunde von 282Informationen über 273Nachrichteneingang 302Status setzen 280

von Facebook verifizierte 278zuvor gesperrte zulassen 254

Benutzeroberfläche 21Bookmark 23

Berechtigung 139, 236administrative 143benutzerspezifische 141erweiterte 140zurücksetzen 237

Bookmark 23, 426bool

has_added_app 393is_app_user 380is_blocked 381is_deleted 382is_following 382is_hidden 363is_unread 363is_visible 371verified 381

BrowserReload-Button 54

Browserwerkzeuge 79Bugtracker 77Button

rendern 427

CC++ 15can_upload 400Canvas 21, 411Canvas-Anwendung 21Cassandra 16CentOS 5 15CFEngine 18Chat API 76Checkin 133, 162Childnet International 4Cisco Webex 16Click to enter-Screen 88Collaborative Filtering 6, 35comment 373comments.add 322comments.get 320comments.remove 323comments_info 374Comments-Plugin 38Common Sense Media 4

Index | 435

Community 15connection 382ConnectSafety 4Cook, Tom 15Cookie 145, 239

benutzerspezifisches 240cookies 356Counter 23Credentials 145CSS 55Curl 350Cybermobbing 4

DDashboard 23, 256

Count-Wert 270Nachrichten abfragen 260

dashboard.addGlobalNews 263dashboard.addNews 256dashboard.clearGlobalNews 265dashboard.clearNews 261dashboard.decrementCount 272dashboard.getActivity 267dashboard.getCount 270dashboard.getGlobalNews 264dashboard.getNews 259dashboard.incrementCount 271dashboard.multiAddNews 258dashboard.multiClearNews 262dashboard.multiDecrementCount 273dashboard.multiGetCount 270dashboard.multiGetNews 260dashboard.multiIncrementCount 272dashboard.multiSetCount 269dashboard.publishActivity 266dashboard.removeActivity 267dashboard.setCount 268Dashboard-API 23Dashboard-Counter 269data.getCookies 239data.setCookie 240Datenschutzrichtlinien 86DDoS-Attacke 148Deauthorize Callback 63DELETE 137Desktopanwendung 43

Session-Secret 259developer 366

Device 62Digg 16Django 17domain 359Domain Content 415Domain Users 414domain_admin 359domain_id* 359domain_name* 359dyndns.org 56

EEchtzeit-Update 147E-Mail 308Empfehlung 37Entwickler 59

Grundsätze und Richtlinien 86Entwicklungsumgebung (IDE) 79Entwicklungswerkzeuge 77Erlang 13Event 165

Informationen abfragen 315event 396event_member 398events.cancel 319events.create 311events.edit 313events.get 315events.getMembers 318events.invite 316events.rsvp 317

FF8-Konferenz 52Facebook 405

Ads API 77Aktuelle Statusmeldungen 14Album 152Anwendung 53, 240, 364Aufbau der Infrastruktur 13Autorisierung 137Canvas 411Chat API 76Datenschutzrichtlinien 86Desktopanwendung 43Entstehungsgeschichte 1Entwickeln einer Anwendung 52Entwicklerkonferenz 52

436 | Index

Entwicklungszyklus 14FBJS 75FBML 74FQL 74Galerie 88Gewinnspiele und Wettbewerbe 86Graph API 73, 124Grundsätze 86Gruppen 286Integration einer Anwendung 61Integrationspunkt 19Kommentare 320Konto 55Kritik an 2Link 340Nachrichten 359Nachrichtensystem 27Notizen 337Open Source 15Page 52, 289PHP 13Pinnwand 31Plattform 13Privatsphäreneinstellung 233Profilseite 21Seiten 392Services 16Sicherheit 233Sicherheitsbeirat 4Social Plugins 6Spielregeln für Entwickler 85Stream 291Übersetzung 48Übersetzungsdatenbank 244Veranstaltungen 396Video 222Werberichtlinien 86Werkzeuge 77Zahlungsbedingungen 86

Facebook Page 21Facebook Places 44Facebook Query Language (FQL) 72Facebook-Anwendung

HTML-Struktur 54Facebook-Galerie 114Facebook-Mashup 35Facebook-Objekt

Privatsphäreneinstellung 137

Facebook-PageReiter 92

Facepile 37, 425family 385Fancounter 54Fanpagereiter 22FB.init 146fb:activity 416fb:add-profile-tab* 427fb:bookmark 426fb:comments 424fb:facepile 425fb:intl 46fb:intl-token 46fb:like 420fb:like-box 423fb:live-stream 418fb:login 428fb:login-button 428fb:name 429fb:profile-pic 431fb:recommendations 418fb:request-form 28fb:share-button 432FBJS 75, 310

Animationsbibliothek 93Funktion 92

FBML 21, 74, 90, 345, 416fbml.refreshImgSrc 345fbml.refreshRefUrl 345fields 125filter_key 25Filterfunktion 25Firebug 79Flashcache 16float xcoord 403float ycoord 403Fortschrittsbalken 54Foto 34, 324, 399

markieren 329Tag auslesen 327

Fotoalbum 152, 324anlegen 330Metainformation 326

FQL 74, 346, 350Abfragen durchführen 346Anwendungen 364Benutzer 378siehe Facebook Query Language 72

Index | 437

Tabellen 354WHERE 353

fql.multiquery 347fql.query 346Freund

Aktivität eines 31Teilnahme an einer Veranstaltung 30

Freunde 282, 389Freundesliste 285Freundschaft XI, 28Freundschaftsanfrage 28friend 389friend_request 392FriendFeed 17friendlist 391friendlist_member 391friendpile 425friends.areFriends 282friends.get 283friends.getAppUsers 284friends.getLists 285friends.getMutualFriends 285FROM 350

Gg++ 15Gästeliste 318Ganglia 15Gefällt mir

siehe Like 29Geheimcode 55, 235Gemeinschaftsseite 21Gewinnspiele 86GID

siehe Gruppen-ID 286Github 119Google 44Graph

sozialer 4, 52Graph API 73, 124, 230

Application 155Objekte 153

Group 170group 386group_member 388groups.get 286groups.getMembers 288Gruppe

Administrator 288

Gruppen 286abfragen 286

Gruppen-ID (GID) 286

HHipHop für PHP 15Horvitz, Eric 6Hosting 120HTTP

REST 73hub.challenge 148Hughes, Chris 1

IID 124IDE

siehe Entwicklungsumgebung 79ids 125IE Developer Toolbar 79IFrames 75Insights 42, 78insights 405Inspiration 83int

app_id 363app_id* 364, 369application_id 366author_id 362count 375created_time 362creator 387daily_active_users 365expires 357folder_id* 360fromid 373gid* 386, 388id 373id* 354, 356int flid 391link_id* 376message_count 361message_id* 362monthly_active_users 365networks 355nid 386node_id* 367notes_count 380notification_id 363

438 | Index

object_id 361owner* 376, 391owner_id 355parent_thread_id 361profile_id* 385rank 371recipient_id* 363sender_id 363snippet_author 361source_id 382source_id* 369target_id 382thread_id* 360, 362time 373uid 385uid* 356, 366, 367, 378, 383, 384, 388uid1* 389unread_count 360update_time 375updated_time 361user_id 375value 372viewer_id 361, 362, 369viewer_id* 360wall_count 380weekly_active_users 365xid* 369

Integrationspunkt 19externer 34interner 21

Internationalisierung 44Beschränkungen 50

Internet Safety Technical Task Force (ISTTF) 4intl.getTranslations 242intl.uploadNativeStrings 244iOS 71iOS SDK 71

JJavaScript 67JavaScript SDK 67JavaScript-Testkonsole 78JPlayer 97JQuery 54JSON 124, 238, 351JSON Encoding Empty Arrays 64

KKanten 4Karaoke 104Karaokemaschine 105Kleine-Welt-Phänomen 4Knoten 4Kommentar 30, 38, 320, 425

löschen 300Konto 55

LLakshman, Avinash 16LAMP 56Leinwand 61Leinwandseite 244Lesezeichen 426Leskovec, Jure 5Like 29like 375Like-Box 36Like-Button 35, 421Link 174, 340link 375link_stats 377links.get 343links.getStats 340links.post 341links.preview 343Linter 226Linux 15Live Stream-Plugin 38liveMessage.send 310Löschen 137Login-Button 37

MMafia Wars 10mailbox_folder 359Malik, Prashant 16Meldung 26

Anhang 26Kommentar zur 30

Memcache 15Mercedes-Benz 98message 362

Index | 439

message.getThreadsInFolder 302Migration 64migrations.getStatuses 254migrations.setStatus 255Milgram, Stanley 4Mobile 62Mobiltelefon 44Moskovitz, Dustin 1Motivation

extrinsische 7intrinsische 7

MP3-Player 97MTV 4MySQL 15, 350

NNachricht 27, 302, 359

abfragen 259globale 263löschen 262

Nachrichteneingang 302Nagios 15native_hash 357Netzwerk

soziales 4Neuigkeiten

siehe News Feed 25News Feed 25News-Einträge

entfernen 265Node.js 122non-blocking I/O 122NoSQL 16Note 178note 367notes.create 338notes.delete 339notes.edit 340notes.get 337notification 363notifications.get 305notifications.getList 306notifications.markRead 307notifications.sendEmail 308Notiz 178Notizen 34, 337

OOAuth 41, 138

Single Sign-on 145object app_data 370object venue 387object_url 356Objekt 124

Event 165Group 170ID 124JSON 352Link 174löschen 137Note 178Page 181Photo 191Post 195Statusmeldung 199suchen 131User 204

ODS 15Open Graph 126Open Graph Protocol 35, 38, 125, 226

Namespace 226Open Source 15owner_id* 359

PPage 181, 289

Informationen zu einer 289Profilreiter 88

page 392Page Content 413Page Tab 62Page Users 412Page Views 414page_admin 394page_fan 395pages.getinfo 289pages.isAdmin 290pages.isAppAdded 291Paginierung 132Performance

API 411permissions 366permissions_info 367

440 | Index

PersonalisierungServerseitige 41

Photo 191photo 401photo_tag 402photos.addTag 329photos.createAlbum 330photos.get 324photos.getAlbums 326photos.getTags 327photos.upload 332PHP 13, 15, 69, 148PHP SDK 69Pinnwand 31Places 133Platform Live Status 78Plugin

Activity Feed 37Comments 38Facepile 37Live Stream 38Recommendations 37

Plugins 408Post 195POST-Request 134pre_hash_string 357privacy 355privacy.get 237Privacy-Objekt 137, 238Privatsphäreneinstellung 137Profil 21

kommerzielle Nutzung 21Profilbilder 133profile 354Profilseite 21Profiltab 22Protokoll

OAuth 138Provider 120Python 70Python SDK 70

QQuellcodewandler 15

RRackspace 16read_mailbox 360

Realtime Update 147Recommendations-Plugin 37Reiter 19Remote Procedure Call Framework 16REST-API 73, 124, 162

alte 230veraltet 230

Restriktionendemographisch 252

Roadmap 77RSVP-Status 317

SSandkasten-Modus 64Saverin, Eduardo 1Scribe 17Secret-Key 149Seiten 392Server 55

Whitelist 65Server-Callback 148Session

Geheimcode 235Key 234ungültig machen 234

Session-Key 259Session-Secret 259Share 29Short-URL 43Sicherheit 233Sicherheitsbeirat 4sifr 97Single Sign-on 41, 145Social Plugin 35Social Plugins 6, 408Software Development Kit 67sozialer Graph 4soziales Netzwerk 4Sprache 48Spracheinstellung 242Sprachversion 48SQL 350standard_friend_info 389standard_user_info 383Statistiken 405status 384status.get 279status.set 280

Index | 441

Statusmeldung 14, 26, 199abfragen 279

Stream 25, 291, 367Attachment 297

stream 368Stream Publishing 135stream.addComment 299stream.addLike 301stream.get 291stream.getComments 300stream.getFilters 294stream.publish 296stream.remove 298stream.removeComment 300stream.removeLike 301stream_filter 371stream_tag 372Stream-Publish-Dialog 68string

about_me 380activities 379actor_id 369actor_id* 373allow 355allowed_restrictions 381, 384api_key* 364app_id* 374appoval_status 358attribution 369best_string 358birthday 379, 383, 386birthday_date 379body 362body_html 363body_text 363books 380canvas_name* 364category 365comment_count 377company_name 365company_overview 393contact_email 381content 368current_location 384deny 355description 355, 358, 365, 387developer_id* 366developers 365display_name 364

email 381embed_html 403filter_key 371filter_key* 369first_name 383firstname 378founded 393friends 355group_subtype 387group_type 387header 367hours 393href 363icon_url 364, 371id 355interests 380last_name 378, 383like_count 377locale 380, 383locale* 357location 393logo_url 364message 370, 385middle_name 378mission 393movies 380music 380name 354, 357, 360, 371, 386, 391name* 378, 383native_hash* 357native_string 357normalized_url 377object_id* 355, 373, 375office 387online_presence 380owner_comment 376page_url 393parent_message_id 361parking 393path 357permalink 370permission_name* 367pic 354, 378, 387, 392pic_big 354, 378, 387, 392pic_big_with_logo 378pic_large 393pic_small 354, 378, 386, 392pic_small_with_logo 378pic_square 354, 378, 392

442 | Index

pic_square_with_logo 379pic_with_logo 379political 379post_id* 369, 373, 375pre_hash_string* 357privacy 387products 393profile_blurb 381profile_url 381, 383proxied_email 380, 384public_transit 393quotes 380recent_news 387relationship 386relationship_status 379religion 379reply_xid 374sex 379, 384share_count 377site 356snippet 361source 385src 401src_big 401src_big_height 401src_big_width 401src_height 401src_small 401src_small_height 401src_small_width 401src_width 401status 380status_id 385subcategory 365subject 360summary 367, 376target_id 370target_id* 373target_type 382text 373time 385timezone 379, 383title 368, 376title_html 363title_text 363total_count 377translation 358tv 380type 354, 356, 372, 393

uid* 371url 354, 376url* 356, 377username* 354, 381value 355, 357website 381, 387, 393xid 374xid* 373

StudiVZ 4Subscription API 149Subscription-HTTP-API 149Subscriptions

abfragen 150löschen 151

TTab 19, 22, 411Tabelle

album 399application 364comment 373comments_info 374connection 382cookies 356developer 366domain 359domain_admin 359event 396event_member 398family 385friend 389friend_request 392friendlist 391friendlist_member 391group 386group_member 388insights 405like 375link 375link_stats 377mailbox_folder 359message 362note 367notification 363object_url 356page 392permissions 366permissions_info 367

Index | 443

photo 401photo_tag 402privacy 355profile 354standard_friend_info 389standard_user_info 383status 384stream 368stream_filter 371stream_tag 372thread 360translation 357user 378video 403video_tag 404

teilensiehe Share 29

Testserver 77Texas Hold'em Poker 10The Family Online Safety Institute (FOSI) 4thread 360Thrift 16time

created_time 363, 368, 369, 376, 395profile_update_time 379update_time 382, 387updated_time 363, 368, 369

Tornado 17TouchGraph Facebook Browser 4translation 357Twitter 16, 43

UÜbersetzung 45, 48, 242Übersetzungsdatenbank 244uid significant_other_id 379URL

teilen 30URL Linter 40, 78User 204user 378User-Agent-Flow 144username string 374users.getInfo 274users.getLoggedInUser 275users.getStandardinfo 276users.hasAppPermission 277users.isAppUser 278

users.isVerified 278users.setStatus 281

VVarnish 17Velocity 15Veranstaltung 30, 311

absagen 319Administrator der 313Gästeliste 318

Veranstaltungen 396Video 222, 324, 399

hochladen 334video 403video.getUploadLimits 336video.upload 334video_tag 404

WWeb Inspector 79Webanwendungen

Cookie 239Webserver 13, 56, 120Website 60Websites

Integration in Facebook 34Werberichtlinien 86Wettbewerbe 86WHERE 353WiredSafety 4

XXAMPP 56XFBML 416X-Hub-Signature-HTTP-Header 149Xing 4XML 351XMP-Protokoll 43

ZZahlungsbedingungen 86Zuckerberg, Mark 1Zuordnungstabelle 394