2016-09-14 4 views
0

Я разрабатываю приложение facebook с PHP (SDK v5). Мне нужно получить сообщения на странице, в которой пользователь имеет административные привилегии и для каждого сообщения, чтобы считать, что это нравится/комментарии/акции.Эффективно извлекать понравившиеся/общие/комментарии на facebook posts (PHP)

Использование API Graph я кончался с этим решением:

$fb = new Facebook\Facebook([ 
'app_id' => 'XXX', 
'app_secret' => 'XXX', 
'default_graph_version' => 'v2.7',]); 

$pageId = //find the page id 
$accessToken = //and the access token 

$response = $fb->get('/'.$pageId.'/feed', (string) $accessToken); 
$response = $response->getDecodedBody(); 
$pagePosts = $response['data']; 
foreach ($pagePosts as $post) { 

    //query for the likes and count them 
    $likesResponse = $fb->get('/'.$post['id'].'/likes', (string) $accessToken); 
    $likesObject = $likesResponse->getDecodedBody(); 
    echo 'likes count: '.count($likesObject['data']).'<br>'; 

    //comments and shares similar to likes 
} 

Я думаю, что выше решение далеко от совершенства, так как для каждого facebook поста три дополнительные вызовы будут выполнены (Понравились, комментарий, акция) , Производительность и острота этого ужаса.

Теперь для повышения производительности, я планировал использовать FQL, но я наткнулся uppon этого комментария из документации facebook FQL:

По состоянию на 8 августа 2016 года, FQL больше не будет доступен и не может быть спросил.


Так что мой вопрос:

Кто-нибудь знает другой способ эффективно извлекать Понравилось/комментарии/акции, или даже способ улучшить производительность curent решения?

+0

https://developers.facebook.com/docs/graph-api/using- graph-api/# fieldexpansion – CBroe

+0

И просить всех симпатий и считать их сами действительно плохо. Установите предел на 0 и запросите резюме. https://developers.facebook.com/docs/graph-api/reference/v2.7/object/likes – CBroe

+0

Благодарим вас за ответы. Итак, я все равно прохожу через все сообщения и запрашиваю отдельно, комментарии и акции по отдельности? Разница в том, что я буду запрашивать резюме, которое уменьшит объем информации? – Mario

ответ

0

Следуя рекомендациям @CBroe, я нашел решение. Решение требует одного вызова к API Graph, который является большой Improvment из (3 * сообщений) +1 звонков:

$fb = new Facebook\Facebook([ 
    'app_id' => 'XXX', 
    'app_secret' => 'XXX', 
    'default_graph_version' => 'v2.7',]); 

$pageId = //find the page id 
$accessToken = //and the access token 

$response = $fb->get('/'.$pageId.'/feed?fields=likes.summary(1).limit(0),comments.summary(1).limit(0), ....', (string) $accessToken); 
$response = $response->getDecodedBody(); 
$pagePosts = $response['data']; 

foreach ($pagePosts as $post) { 
    $likesObject = $post['likes']; 
    $likesCount = $likesObject['summary']['total_count']; 

    $commentsObject = $post['comments']; 
    $commentsCount = $commentsObject['summary']['total_count']; 
}