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 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.

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:

<?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.

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:

<?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
}
?>

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:

<?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.

# 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:

<?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

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) 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);
?>
dev/php/facebook.txt · Zuletzt geändert: 29.03.2016, 14:21 Uhr von wikiredaktion@reneknipschild.de
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
rkWiki wird freundlich bereitgestellt von
René Knipschild – Custom Software Development, Ihr Partner in Sachen IT-Beratung & individueller Software-Entwicklung. www.IT-Beratung-Nordhessen.de – Made in Germany
Copyleft inverted copyright sign 2012-2020 René Knipschild | www.reneknipschild.net | Impressum | Datenschutz