2016-08-05 92 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); 

}