2016-08-05 11 views
0

FacebookのPHP SDK &ページのフィードポスト(フィルタリング結果)FacebookのPHP SDK&ページのフィードポスト(フィルタリング結果)

ご挨拶!私は最近、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

ちょうどその奇妙なforeachの代わりに1つの呼び出しでこれを置くのはなぜですか? > pageid/feed?fields = message、full_picture、picture – luschn

+0

もし私があまりにも多くのことを尋ねていないなら、あなたは数分間余裕を見て、そうする正しい方法を教えてくれますか?私はこれらのAPIを実装するのに苦労してきました。あなたが私に手渡すことができれば本当に嬉しいです。 ありがとうございます – 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); 

}