2016-08-05 88 views
0

Facebook PHP SDK & Page feed帖子(過濾結果)Facebook PHP SDK&Page feed(過濾結果)

問候!最近我一直致力於在網站上實施Facebook公共頁面供稿(每篇文章都有描述,日期和圖片)。 我已經把放在一起下面的代碼,至少允許我使用$元素的foreach。

$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); 

它的工作很好,但很不幸,而不是由業主只列出網頁上發佈的帖子,還列出了盒子「遊客的帖子」 ......我不想內發佈的文章。 您是否知道和/或可以幫助我弄清楚如何過濾這些結果,以便僅列出頁面所有者發佈的帖子?

非常感謝!

+1

https://developers.facebook.com/docs/graph-api/reference/page/feed //僅供參考,如果您在每次頁面加載時都做到這一點,這遠沒有「高效」沒有在你的最後執行任何緩存,應該是顯而易見的。你很可能會遇到API速率限制。 – CBroe

+1

爲什麼不把這個放在ONE呼叫中而不是那個奇怪的foreach? > pageid/feed?fields = message,full_picture,picture – luschn

+0

如果我的要求不是太高,可否抽出幾分鐘時間讓我改正方法?我一直在努力實現這些API,如果你可以借給我,我會真正appeciate。 在此先感謝 – Cerere

回答

3

感謝Luschn和CBroe發佈的建議,我一直在閱讀/尋找,並使用下面的代碼進行嘗試。我不確定這是否是正確的/最好的方式,但它看起來確實很好。

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); 

}