21
Nov
2010
admin

Daten veröffentlichen über die Graph API

Da wir nun wissen, wie wir Daten über die Graph API abfragen können, kommen wir nun zum veröffentlichen von Daten. Als Beispiel werden wir das Veröffentlichen einer Status Meldung im eigenen Newsfeed nehmen, da das eine der mit am häufigsten genutzten Methoden in Bezug auf Viralität ist.

Damit wir das Veröffentlichen einer Status Meldung nicht in unserem eigenen Profil testen müssen, werden wir uns als erstes einen Testuser anlegen. Da wir Daten im Stream des Testusers veröffentlichen wollen, müssen wir die erweiterte Berechtigung publish_stream anfordern.

Hinweis
Wenn Du mehr über das Arbeiten mit Testusern wissen möchtest, findest Du alles, was Du brauchst, im Workshop Anwendungen Testen mit Testusern

Das Veröffentlichen der Daten

require 'library/facebook.php';

define('APP_ID',      '171501209535074');
define('APP_SECRET' , '9e8448b3d547b9ed7ded4ce3843d9353');

$facebook = new Facebook(array(
  'appId'  => APP_ID, // Anwendungs ID
  'secret' => APP_SECRET, // Anwendungs-Geheimcode
  'cookie' => true, // enable optional cookie support
));

try {

  // Alle Testuser abrufen, die für diese Anwendung erstellt wurden.
  $testuser = $facebook->api(APP_ID . "/accounts/test-users", 'get');

  // Wenn noch kein Testuser für diese Anwendung existiert, erstellen wir uns einen.
  if (isset($testuser['data'][0]['id'])) {
    $facebook->api(APP_ID . "/accounts/test-users?installed=true&permissions=publish_stream", 'post');
  }
  // Wir speichern die User ID und die Login URL des Testusers.
  $testuserId       = $testuser['data'][0]['id'];
  $testuserLoginUrl = $testuser['data'][0]['login_url'];

  // Diese Daten sollen im Newsfeed gepostet werden.
  $arguments = array(
    'message' => 'Hier kann eine persönliche Nachricht stehen.',
    'picture' => 'http://www.abouttheweb.de/wp-content/themes/abouttheweb/img/atw-meta-image.jpg',
    'link'  => 'http://www.abouttheweb.de',
    'name' => 'About The Web',
    'caption' => 'Tutorials zu Facebook Anwendungen',
    'description' => 'Herzlich willkommen auf AboutTheWeb. Hier findest Du Tutorials, zur Erstellung von Facebook Anwendungen.
                      AboutTheWeb bietet Einsteigern die Chance, sich in die Erstellung
                      von Facebook Anwendungen mit PHP einzuarbeiten.',
    'actions' => '{"name": "ATW auf Facebook", "link": "http://www.facebook.com/pages/About-The-Web/151034811586000?v=app_102918576445766"}',
    'privacy' => '{"value": "EVERYONE"}',
  );

  // API Call. Veröffentlichen der Status Meldung.
  $facebook->api("/{$testuserId}/feed", 'post', $arguments);

  // Um zu prüfen, ob alles geklappt hat, melden wir uns, durch klicken dieses Links, als der Testuser an.
  print '<a href"' . $testuserLoginUrl . '">Hier geht´s zum Testuser Profil</a>';

} catch (FacebookApiException $e) {
  print $e;
}

Das Veröffentlichen im Detail

  // Alle Testuser abrufen, die für diese Anwendung erstellt wurden.
  $testuser = $facebook->api(APP_ID . "/accounts/test-users", 'get');

  // Wenn noch kein Testuser für diese Anwendung existiert, erstellen wir uns einen.
  if (!isset($testuser['data'][0]['id'])) {
    $facebook->api(APP_ID . "/accounts/test-users?installed=true&permissions=publish_stream", 'post');
  }
  // Wir speichern die User ID und die Login URL des Testusers.
  $testuserId       = $testuser['data'][0]['id'];
  $testuserLoginUrl = $testuser['data'][0]['login_url'];

Wir werden das Veröffentlichen der Daten an einem Testuser Profil ausprobieren. Dazu legen wir uns als erstes einen Testuser an. Um sicher zu gehen, dass wir nicht bei jedem Seitenaufruf einen neuen Testuser generieren, wird in Zeile 18 geprüft, ob bereits ein Testuser existiert. Sobald wir einen Testuser haben, speichern wir uns die User ID und die Login URL ab. Die User ID benötigen wir, um eine Nachricht für diesen User zu veröffentlichen. Mit der Login URL werden wir testen, ob alles geklappt hat.

Als nächstes stellen wir die Daten bereit, die wir veröffentlichen wollen.

  // Diese Daten sollen im Newsfeed gepostet werden.
  $arguments = array(
    'message' => 'Hier kann eine persönliche Nachricht stehen.',
    'picture' => 'http://www.abouttheweb.de/wp-content/themes/abouttheweb/img/atw-meta-image.jpg',
    'link'  => 'http://www.abouttheweb.de',
    'name' => 'About The Web',
    'caption' => 'Tutorials zu Facebook Anwendungen',
    'description' => 'Herzlich willkommen auf AboutTheWeb. Hier findest Du Tutorials, zur Erstellung von Facebook Anwendungen.
                      AboutTheWeb bietet Einsteigern die Chance, sich in die Erstellung
                      von Facebook Anwendungen mit PHP einzuarbeiten.',
    'actions' => '{"name": "ATW auf Facebook", "link": "http://www.facebook.com/pages/About-The-Web/151034811586000?v=app_102918576445766"}',
    'privacy' => '{"value": "EVERYONE"}',
  );

Die Argumente:

Argument Beschreibung
message Die eigentliche Nachricht.
picture Die URL zu dem Bild, welches neben der Meldung angezeigt werden soll.
link Der Link, welcher der Nachricht angehängt werden soll.
name Der Name des Links.
caption Eine Kurzbeschreibung, die unter dem Link erscheint.
description Die eigentliche Beschreibung, die unter dem Link und der Kurzbeschreibung erscheint.
source Die URL zu einem Flash Film oder einem Video, dass in den Beitrag eingebettet werden soll.
actions Eine Liste von Aktionen, die für diesen Post verfügbar sind. Die Liste muss im JSON Format vorliegen und name und link enthalten (Beispiel: {"name": "Google", "link": "http://www.google.de"}).
privacy Die Privatsphäre Einstellungen des Posts. Anzugeben im JSON Format (Beispiel: {"value": "ALL_FRIENDS"}).
Für das value Feld sind folgende Werte zugelassen:
EVERYONE, CUSTOM, ALL_FRIENDS, NETWORKS_FRIENDS, FRIENDS_OF_FRIENDS.

Zusätzlich kann friends, networks, allow und deny als Feld übergeben werden.

Wird CUSTOM ans value übergeben, muss das friends Feld angegeben werden und mit einem der folgenden Werte spezifiziert werden:
EVERYONE, NETWORKS_FRIENDS, FRIENDS_OF_FRIENDS, ALL_FRIENDS, SOME_FRIENDS, SELF oder NO_FRIENDS.

Das networks Feld kann eine Komma separierte Liste von Netzwerk IDs oder eine 1 für alle Netzwerke des Users enthalten.

Das allow Feld muss ausgefüllt werden, wenn das friends Feld auf SOME_FRIENDS gesetzt wurde und erwartet eine Liste von User IDs von Freunden, die den Inhalt sehen dürfen.

Ebenso verhält es sich mit dem deny Feld, nur dass die Freunde, deren IDs dort angegeben werden, den Beitrag NICHT sehen können.

targeting Ein JSON Objekt, mit dem die Zielgruppe des Posts bestimmt werden kann. Dieses Objekt kann dann die Werte für country , city , region und locale enthalten (Beispiel: {"country":"de","id":542609,"value":"Berlin"}). Die Werte für die Parameter kann man diesen Dateien entnehmen: alle Städte, Hauptstädte, Local-Code und eine Liste von Städten und Lokal-Codes im JSON Format.

Es folgt der API Aufruf. Hier werden die Daten über die Graph API veröffentlicht.

  // API Call. Veröffentlichen der Status Meldung.
  $facebook->api("/{$testuserId}/feed", 'post', $arguments);

Anschließend lassen wir uns einen Link ausgeben, mit dem wir uns in das Profil des Testusers einloggen können.

  // Um zu prüfen, ob alles geklappt hat, melden wir uns, durch klicken dieses Links, als der Testuser an.
  print '<a href="' . $testuserLoginUrl . '">Hier geht´s zum Testuser Profil</a>';

Folgen wir dem Link, sehen wir, dass die Status Nachricht im Newsfeed des Testuser erschienen ist.

Das war bereits alles, um eine Nachricht über die Graph API zu veröffentlichen. Natürlich bietet uns die Graph API auch die Möglichkeit andere Daten zu veröffentlichen. Hier eine Übersicht der Daten, die zurzeit supportet werden:

Methode Beschreibung Argumente
/PROFILE_ID/feed Einen neuen Post im Newsfeed erstellen. message, picture, link, name, caption, description, source, privacy
/POST_ID/comments Einen neuen Kommentar zum angegeben Post erstellen. message
/POST_ID/likes Einen Post als Gefällt mir markieren. - keine -
/PROFILE_ID/notes Eine Notiz für das angegebe Profil erstellen. message, subject
/PROFILE_ID/links Einen Link für das angegebe Profil erstellen. link, message
/PROFILE_ID/events Ein Event erstellen. name, start_time, end_time
/EVENT_ID/attending An einem Event teilnehmen. - keine -
/EVENT_ID/maybe Vielleicht an einem Event teilnehmen. - keine -
/EVENT_ID/declined Einem Event absagen. - keine -
/PROFILE_ID/albums Ein Fotoalbum erstellen. name, message
/ALBUM_ID/photos Ein Foto ins angegebe Fotoalbum hochladen. message
/PROFILE_ID/checkins Ein Checkin für einen Ort erstellen. coordinates, place, message

 

Hinweis
Du kannst alle Codebeispiele von AboutTheWeb über ein SVN Repository auschecken. Dieses Beispiel findest du unter folgender Adresse:
http://svn.abouttheweb.de/atwtutorials/trunk/publish/

Alternativ kannst Du alle Codebeispiele über das AboutTheWeb github Repository auschecken.

Trackback-URL für diesen Beitrag

http://abouttheweb.de/trackback/603

Ähnliche Artikel

X
Laden