Gästelisten von Facebook Events auslesen

Es gibt ja leider seit geraumer Zeit nicht mehr die Möglichkeit bei einem Event auf Facebook die Gästeliste sauber zu exportieren. Man kann sich die Liste der “Attendees” zwar anzeigen lassen, allerdings nur in einer kleinen Box die es praktisch unmöglich macht einen übersichtlichen Export zu erhalten. Vor allem wenn die Gästeliste aus hunderten von Personen besteht, es werden nämlich nur hundert angezeigt bis man auf “mehr anzeigen” klickt:

Facebook Attendees

Markieren, kopieren und die Namen herausfiltern ist also mühsam, und auf die IDs der jeweiligen User kommt man damit sowieso nicht. Nicht dass man sie für eine Gästeliste benötigen würde, aber schön wärs schon :) Nun gibt es natürlich die Möglichkeit eine Gästeliste per Greasemonkey-Script auszulesen, aber die weitaus weniger umständliche und feinere Art ist natürlich die Verwendung einer Facebook App. Wie man eine Facebook App grundsätzlich anlegt erspare ich euch an dieser Stelle, dafür gibt es bereits mehr als genug Tutorials im Internet.

Graph API – Attending

Um die Attendees/Gäste der Veranstaltung einer öffentlichen Facebook Seite zu erhalten muss ein User die App nicht authorisieren, für den Zugriff auf die vom User direkt erstellen Events gilt das natürlich nicht. Dafür gibt es die Permission “user_events” und der User muss die App natürlich mit dieser explizit authorisieren. Für eine umfangreichere App die auch Facebook Seiten anzeigt von denen der User ein Administrator ist (und um brauchbare Statistiken zur Benutzung der App zu erhalten) ist es natürlich notwendig den User doch zu authorisieren.

Mit dem Graph API ist das Auslesen der Attendees wie immer recht simpel:

$attending = $facebook->api('/[EVENT-ID]/attending');
$attending = $attending['data'];

foreach ($attending as $attendee)
{
	echo 'ID: ' . $attendee['id'] . ' / ';
	echo 'Name: ' . $attendee['name'] . "\n";
}

Ausser der ID und dem Namen bekommt man natürlich keine weiteren Daten der Gäste, die Daten können per PHP natürlich recht einfach zum Beispiel als CSV-Export bereit gestellt werden. Beispielhaft habe ich dazu eine Facebook App programmiert damit man sich vorstellen kann wie so etwas aussehen könnte: http://facebook.devils-heaven.com/apps/eventattendees
Designtechnisch natürlich nicht Oscar-reif, dafür aber garniert mit jQuery und AJAX-Technologie :)

Links

  1. Facebook PHP SDK
  2. Facebook Graph API
  3. Event Attending App

10 Responses to “Gästelisten von Facebook Events auslesen”

  1. Marco Schierhorn Antworten 31. Mai 2011 at 17:12

    Klappt leider nur mit Events unter 1000 Teilnehmern.
    Darüber hinaus gibts noch einen Bug bei fb

  2. Klappt leider bei mir – wie das Lesen der events – nicht

    OAuthException: (#803) Some of the aliases you requested do not exist: [EVENT-ID]

    Bitte vollständigen php-Code veröffentlichen-

    • Sorry, meine Beiträge sollen keine kopierbaren Programme sein, sondern Tips und Tricks wie man mit der Facebook API arbeitet, ich bitte um Verständnis ;)
      Ich gebe aber gerne Tips: Die Event-ID ist im Beispiel lediglich ein Platzhalter und muss mit einer korrekten ID befüllt werden.

  3. OK.
    In dieser Art ?

    $facebook->api(“/100819660014471/attending”)

    gibt aber auch kein Ergebnis.
    Klaus-Dieter

    • Genau, im Prinzip beginnt jede Anfrage an die Graph API mit einer ID oder einer Vanity-URL. Diese muss natürlich gültig sein. Ich empfehle vor der Programmierung mit der API allerdings dringend sich näher mit der Graph API auseinander zu setzen (http://developers.facebook.com/docs/reference/api/), und mit der User-Authentifizierung. Ein einfaches Programmier-Beispiel zum Umgang mit dem Facebook PHP SDK liegt übrigens dem SDK selbst bei.

  4. Hallo, ist es möglich die über eine Fanseite erstellten Veranstaltungen in einer Liste auszugeben, auf einer externen Seite, die als Tab in FB angezeigt werden soll.

  5. Hi Andi,
    danke für diesen Artikel. Bei meinem Problem ist es aber etwas spezieller. Und zwar, ist es möglich, nur die Anzahl der Zusagen ausgeben zu lassen? Ich möchte in meiner App die Zusagen von verschiedenen Veranstaltungen vergleichen.
    Danke!

    Gruss,
    Stefan

    • hi! natürlich, das ist kein problem:

      nach dieser zeile:
      $attending = $attending['data'];
      …kannst du gleich die anzahl ausgeben:
      echo count($attending);

      zumindest falls ich deine frage richtig verstanden habe :)

      wenn du allerdings gleich mehrere veranstaltungen gleichzeitig abfragen willst dann solltest du einen batch-request verwenden. der dauert nämlich dann nur so lange wie der längste einzelrequest. zu den batch-request hab ich allerdings einen eigenen blogpost geplant, das kommt noch.