【问题标题】:Facebook Graph API: Can only display 100 postsFacebook Graph API:只能显示 100 个帖子
【发布时间】:2016-07-06 07:35:01
【问题描述】:

我刚刚开始涉足 JSON 和 Facebook 的 Graph API。通过以下内容,我已经能够从我的 Facebook 页面中提取帖子:

$page_id = '???';
$access_token = '???';

$json_object = @file_get_contents('https://graph.facebook.com/' . $page_id . 
'/posts?access_token=' . $access_token . '&limit=100');
$fbdata = json_decode($json_object);

foreach ($fbdata->data as $post ) {
    $posts .= '<p><a href="' . $post->link . '">' . $post->story . '</a></p>';
    $posts .= '<p><a href="' . $post->link . '">' . $post->message . '</a></p>';
    $posts .= '<p>' . $post->description . '</p>';
    $posts .= '<br />';
}

echo $posts;

但是,Facebook 不允许在一个 JSON 请求中发布超过 100 个帖子。有没有办法通过提出多个请求来解决这个问题,还是我应该以完全不同的方式解决这个问题?

有人知道如何显示我的 Facebook 页面上的所有现有帖子吗?

【问题讨论】:

  • 您遇到的错误是什么?没有它,我们无能为力。
  • @BRO_THOM 对不起,我应该解释得更清楚。据我所知,Facebook 只允许您在一个 JSON 请求中提取 100 个帖子。我需要找到一种方法来提出多个请求,直到显示所有帖子,或者我需要以完全不同的方式解决这个问题。
  • 那我明白你的问题了。您应该在达到 100 个帖子结束时触发 ajax 或 pjax 调用,以获取另外 100 个帖子。请参阅api.jquery.com/jquery.ajax 了解更多信息。
  • @BRO_THOM 感谢您的建议!我了解 Ajax 的基础知识,但是我不确定如何从更下方的提要请求帖子。
  • 通常您会使用一种称为分页的方法与 ajax 一起确定用户当前位于哪个“页面”或“索引”上。不幸的是,从头开始构建这样一个系统非常困难。我建议投资于了解框架和 MVC 结构化,因为它们大大简化了这类代码的使用。编辑:plugins.jquery.com/tag/pagination 似乎拥有分页所需的所有插件。

标签: php json facebook facebook-graph-api


【解决方案1】:

通过分页可以显示无限数量的帖子,如下所示:

//Set page variable/page number

if($_GET['page'] == 0) {
    $page = 1;
}
else {
    $page = $_GET['page'];
}

//Page increments/decrements
$next_page = intval($page + 1);
$prev_page = intval($page - 1);

//Set offset if it isn't the first page
if ($page > 1) {
    $offset = $page * 5 - 5;
} 

//Facebook Dev details
$page_id = '???';
$access_token = '???';

//Get JSON for specified page
$json_object = @file_get_contents('https://graph.facebook.com/' . $page_id . 
'/posts?access_token=' . $access_token . '&limit=5' . '&offset=' . $offset);

//Interpret the data
$fb_data = json_decode($json_object);

foreach ($fb_data->data as $post ) {
    $posts .= '<p><a href="http://facebook.com/' . $post->id . '">' . $post->story . '</a></p>';
    $posts .= '<p><a href="http://facebook.com/' . $post->id . '">' . $post->message . '</a></p>';
    $posts .= '<p>' . $post->description . '</p>';
    $posts .= '<br />';
}

//Display posts
echo $posts;

//If page isn't the first page add previous button
if ($page > 1) {
    echo '<a href="?page=' . $prev_page . '">' . 'Previous' . '</a>';
} 

//Total offset of posts on next page
$next_page_offset = $offset + 5;

//Make next page object
$json_next_page_object = @file_get_contents('https://graph.facebook.com/' . $page_id . 
'/posts?access_token=' . $access_token . '&limit=5' . '&offset=' . $next_page_offset);

//Get JSON for next page
$fb_next_data = json_decode($json_next_page_object);

//Echo next button if size of next data is greater than one
if( sizeof( $fb_next_data->data) > 0 ) {
    echo '<a href="?page=' . $next_page . '">' . 'Next' . '</a>';
}

可能需要一些改进,但到目前为止它可以正常工作。

我希望我目前所掌握的知识可以帮助其他人制作一个基本且易于管理的 Facebook 订阅源:]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2011-12-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多