======Facebookposts einer Seite auf der eigenen Homepage anzeigen====== 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. =====Facebook-APP===== 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 [[https://developers.facebook.com/|developers.facebook.com]] einloggen und als Entwickler registrieren. Danach sollte man unter [[https://developers.facebook.com/setup|developers.facebook.com/setup]] eine neue APP anlegen können. Die APP-ID sowie das APP-Secret lassen sich daraufhin unter [[https://developers.facebook.com/apps/|developers.facebook.com/apps/]] abrufen. =====Token===== 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: Wir bekommen, wenn alles geklappt hat, unser Token in Reintextform. =====Posts holen===== 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: Jetzt haben wir die Posts, in JSON kodiert. Damit PHP das versteht, müssen wir sie erstmal umwandeln: 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: ';//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'].'
';//Der eigentliche Post als Text if(isset($post['story'])) echo 'Story: '.$post['story'].'
';//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 } ?>
=====Bilder===== 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: ';//Die Url könnte man in ein -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. =====# auswerten===== 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: $0', $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 =====cURL===== 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) [[https://curl.haxx.se/|cURL]] verwenden. Mit PHP geht das wie folgt um z.B. das Token zu holen: