2016-08-05 14 views
0

Facebook PHP SDK & Seite Feed Post (Filterergebnisse)Facebook PHP SDK & Seitenvorschub Post (Filterergebnisse)

Grüße! Ich habe in letzter Zeit auf eine effektive Art und Weise gearbeitet, um einen Facebook Public Page Feed (jeder Beitrag mit Beschreibung, Datum und Bild) auf einer Website zu implementieren. Ich habe den folgenden Code zusammengestellt, der mir erlaubt, eine Foreach auf $ Elemente zu verwenden.

$pageid = '#PAGEID#'; 
$accesstoken = '#ACCESSTOKEN#'; 
$url = "https://graph.facebook.com/v2.7/$pageid/feed?limit=20&access_token=$accesstoken"; 

function getfb($url){ 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_REFERER, ''); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); 
    $raw_xml = curl_exec($curl); // execute the curl command 
    $result = json_decode($raw_xml, true); 

    return $result; 
} 

$elements = getfb($url); 
foreach($elements['data'] as $k => $v){ 
    $url = "https://graph.facebook.com/v2.7/{$v['id']}?fields=full_picture,picture&access_token=$accesstoken"; 
    $fields = getfb($url); 
    $elements['data'][$k]['pictures'] = $fields; 
} 

var_dump($elements); 

Es funktioniert gut, aber leider nicht eine Auflistung nur die auf der Seite vom Eigentümer veröffentlichten Beiträge, es listet auch Beiträge in der Box veröffentlicht „Visitor Posts“ ... was ich nicht will. Wissen Sie und/oder können Sie mir helfen, herauszufinden, wie Sie diese Ergebnisse so filtern, dass nur vom Seitenbesitzer veröffentlichte Beiträge aufgelistet werden?

Vielen Dank!

+1

https://developers.facebook.com/docs/graph-api/reference/page/feed // FYI, dass dies bei weitem nicht „effizient“ ist, wenn Sie diese auf jeder Seite Last zu tun sind, ohne Caching an Ihrem Ende zu implementieren, sollte offensichtlich sein. Sie werden sehr wahrscheinlich mit den API-Grenzwerten konfrontiert. – CBroe

+1

warum nicht einfach in einen Anruf statt dieser seltsamen foreach? > peideid/feed? fields = message, full_picture, bild – luschn

+0

Wenn ich nicht zu viel frage, könntest du mir ein paar Minuten ersparen und mir zeigen, wie ich das richtig machen soll? Ich habe viel gekämpft, diese API zu implementieren, und ich würde wirklich appreciate, wenn Sie mir und Hand leihen könnten. Vielen Dank im Voraus – Cerere

Antwort

3

Dank den Vorschlägen, die Luschn und CBroe gepostet haben, habe ich weiter gelesen/gesucht und bin mit dem folgenden Code fertig geworden. Ich bin mir noch nicht sicher, ob dies der richtige/beste Weg ist, aber es scheint gut zu funktionieren.

require_once ('facebook/autoload.php'); // See https://developers.facebook.com/docs/reference/php/ 

$facebook_page_id   = 'xxx'; 
$facebook_app_secret  = 'yyy'; 
$facebook_app_id   = 'zzz'; 
$facebook_graph_version  = 'v2.6'; 

$fb = new Facebook\Facebook([ 
    'app_id' => $facebook_app_id, 
    'app_secret' => $facebook_app_secret, 
    'default_graph_version' => $facebook_graph_version 
]); 

$response = $fb->get('/'.$facebook_page_id.'/posts?fields=message,full_picture,link,updated_time,picture&limit=5', $fb->getApp()->getAccessToken()); 

$get_data = $response->getDecodedBody(); // for Array resonse 

foreach ($get_data['data'] as $single) { 

    var_dump($single); 

}