Grundlegend funktionert die Facebook-Graph-API so, dass man zuerst ein Access-Token anfragen muss. Mit diesem Token kann man dann die Posts anfragen, wenn das Token gültig ist, bekommt man einen JSON-String zurück, welchen man z.B. mit PHP auswerten kann.
Damit man aber übehaupt ein Token anfragen kann, braucht man erstmal eine APP-ID, sowie einen APP-Schlüssel (auch „APP-Secret“). Um diese beiden Teile zu kriegen, muss man sich unter developers.facebook.com einloggen und als Entwickler registrieren. Danach sollte man unter developers.facebook.com/setup eine neue APP anlegen können. Die APP-ID sowie das APP-Secret lassen sich daraufhin unter developers.facebook.com/apps/ abrufen.
Jetzt haben wir also unsere APP-ID und den dazugehörigen Schlüssel. Damit machen wir eine Anfrage an https://graph.facebook.com/oauth/access_token?client_id=[APP-ID]&client_secret=[APP-Secret]&grant_type=client_credentials ([APP-ID] und [APP-Secret] werden natürlich durch die APP-ID bzw das Secret ersetzt) Mit PHP geht das folgendermaßen:
<?php $token = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id=[APP-ID]&client_secret=[APP-Secret]&grant_type=client_credentials'); ?>
Wir bekommen, wenn alles geklappt hat, unser Token in Reintextform.
Jetzt, da wir unser Token haben, können wir die Posts holen. Dazu müssen wir eine Anfrage an https://graph.facebook.com/v2.5/[Seiten-ID]/feed?[TOKEN] machen, welche uns ein JSON-String zurückliefert, welches wir dann schließlich mit z.B. PHP auswerten können. Aber der Reihe nach. Die Posts holen wir mit PHP folgendermaßen:
<?php $posts = file_get_contents('https://graph.facebook.com/v2.5/150214731676350/feed?'.$token); ?>
Jetzt haben wir die Posts, in JSON kodiert. Damit PHP das versteht, müssen wir sie erstmal umwandeln:
<?php $posts = json_decode($posts, true); ?>
Der letzte Pararmeter von json_decode sorgt dafür, dass wir ein Array bekommen, und keine Std-Klassen. Dieses Array können wir mit einer foreach-Schleife durchlaufen und die Posts ausgeben:
<?php foreach($posts['data'] as $post) { echo 'Post-ID: '.$post['id'].'<br/>';//Man kann mit dieser ID auf den dazugehörigen Post verlinken, dazu muss man sie nur den hinteren teil (mit explode('_', $post['id']) in folgende URL einbauen: https://www.facebook.com/returnkorbach/posts/[Besagte Post-ID] echo 'Post-Nachricht: '.$post['message'].'<br/>';//Der eigentliche Post als Text if(isset($post['story'])) echo 'Story: '.$post['story'].'<br/>';//Wenn es Statusupdates (?) gab, existiert dieses Element, es empfielt sich also, vorher zu überprüfen, ob das Element existiert, um fehlermeldungen zu vermeiden echo 'Datum: '.$post['created_time'];//Das Datum des Posts, allerdings nicht als Unix-Timestamp } ?>
Manche Posts enthalten Bilder. Sollen diese Bilder ebenso angezeigt werden, muss man zunächst überprüfen, ob der Post überhaupt ein Bild enthält. Das geht so:
<?php $post_data = json_decode(file_get_contents('https://graph.facebook.com/'.$post['id'].'?fields=object_id'), true); if(isset($post_data['object_id'])) { echo 'Post enthält Bild. Bild-URL: https://graph.facebook.com/'.$post_data['object_id'].'/picture<br/>';//Die Url könnte man in ein <img>-Tag packen und anzeigen } ?>
Wir holen also mehr Infos über den post, dekodieren das JSON und wenn ein Bild im Post drin ist,basteln wir uns die Bild-URL.
Wenn wir z.B. Facebook-Posts anzeigen, kommen dort manchmal sogenannte Hashtags (#) vor. Wenn wir mit einem Klick darauf eine Suche auf Facebook nach diesem Hashtag zu suchen. Andere Einsatzzwecke sind natürlich auch denkbar. In PHP brauchen wir dafür einen Regulären Ausdruck:
<?php function convertHashtags($str){ $regex = "/#+([a-zA-Z0-9_]+)/"; $str = preg_replace($regex, '<a href="https://www.facebook.com/hashtag/$1" target="_blank">$0</a>', $str); return $str; } ?>
Der Ausdruck macht nichts anderes, als jeden Text, der nach einem # folgt, bis zum nächsten Leerzeichen, mit einem Link auf https://www.facebook.com/hashtag/[gefundener Hashtag ohne #] zu versehen
Wenn auf dem System, auf welchem das PHP-Script laufen soll, keine Anfragen via file_get_contents an externe Ziele erlaubt, muss man (falls installiert) cURL verwenden. Mit PHP geht das wie folgt um z.B. das Token zu holen:
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token?client_id='.$client_id.'&client_secret='.$client_secret.'&grant_type=client_credentials'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $token = curl_exec($ch); curl_close($ch); ?>