使用facebook api获取帖子视图的更有效方法

时间:2017-09-26 09:50:21

标签: php facebook object facebook-graph-api

我正在使用facebook api从页面insights对象中读取post_impressions字段。问题是,您只能支持1个帖子的结果,或者显示一个月/周/天内所有帖子的所有展示次数的结果,这意味着您无法取回显示所有帖子的结果及其对应的{{ 1}}。

我现在想要它的工作方式是循环我的facebook帖子并在该循环中我为insights对象添加了一个file_get_contents,只需在url中添加一个循环的post id。

这样我收到的每个帖子都会向FB api发出新的请求,这会对加载时间产生很大的影响。

有更有效的方法吗?当我删除我的代码部分时,我的网站加载速度更快。

以下是我的代码摘要以获得更好的想法:

$json_object = file_get_contents("https://graph.facebook.com/v2.10/367712570004555/posts?fields=comments,full_picture,likes,message,picture,story,permalink_url,updated_time,from&access_token=12303302670122ZDzN5ucp8JzMf5VBDdY");

$feedarray = json_decode($json_object);

foreach ($feedarray->data as $key => $feed_data)
{
    $json_insights = file_get_contents("https://graph.facebook.com/v2.10/".$feed_data->id."/insights/post_impressions?access_token=EAACEdEose0cBANjKErkMLhCgmZBBrgLn8KtZBW2d6JbWz7sZAivld67JxvP8MqyZCs9xg3Bh11lzETOwd64LIpAPp3zbstu8ELFZC8HOwYyxckqJ60WQcVL1FqB3iy5L3oRCsFSQA7MzHGgcqIYxsjAlJomYrOMZCqo6PwZDZD");

    $views = $insights->data[0]->values[0]->value;

    echo $views;
}

1 个答案:

答案 0 :(得分:2)

您可以使用Field Expansion语法一次性完成所有操作:

.../367712570004555/posts?fields=comments,...,insights.metric(post_impressions)