You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Facebook Graph API获取FB主页:仅返回25个而非全部的问题

解决Facebook Graph API仅返回25个主页的问题

嘿,我懂你现在的困扰——明明手里有100多个FB主页,调用me/accounts却只拿到25个结果,这其实是Graph API的默认分页限制在搞事情!别慌,我给你两个实用的解决办法:

方法1:直接指定返回数量

Graph API默认每页只返回25条数据,你可以在请求URL里加上limit参数,一次性获取更多结果(比如100条,API允许的单页最大数量通常能到1000,但建议根据实际情况调整,避免请求超时)。修改你的代码如下:

try {
    // 添加limit参数,这里设置为100,可按需调整
    $response = $this->fb->get('me/accounts?limit=100', $_SESSION['facebook_access_token']);
    $accounts = $response->getGraphEdge();
} catch (Facebook\Exceptions\FacebookResponseException $e) {
    // 处理Graph API返回的错误
    // redirect('login');
} catch (Facebook\Exceptions\FacebookSDKException $e) {
    // 处理Facebook SDK的错误
}

方法2:分页循环获取所有主页

如果你的主页数量远超单页能返回的最大值,那就得通过分页循环来捞全所有结果。Facebook PHP SDK提供了便捷的分页处理方法,直接用next()就能拿到下一页的链接,直到没有更多数据为止:

try {
    $response = $this->fb->get('me/accounts', $_SESSION['facebook_access_token']);
    $accounts = $response->getGraphEdge();
    
    // 用来存储所有主页的数组
    $allAccounts = [];
    // 先把第一页的结果存进去
    foreach ($accounts as $account) {
        $allAccounts[] = $account->asArray();
    }
    
    // 循环获取下一页,直到没有更多结果
    while ($accounts = $accounts->next()) {
        foreach ($accounts as $account) {
            $allAccounts[] = $account->asArray();
        }
    }
    
    // 现在$allAccounts里就是你所有的FB主页啦
} catch (Facebook\Exceptions\FacebookResponseException $e) {
    // 处理Graph API错误
    // redirect('login');
} catch (Facebook\Exceptions\FacebookSDKException $e) {
    // 处理SDK错误
}

最后提个小提醒:确保你的访问令牌已经获取到了manage_pages权限,不然可能会过滤掉部分你没有权限操作的主页(不过你已经能拿到25个,权限大概率是没问题的,但还是可以检查一下哦)。

内容的提问来源于stack exchange,提问作者M Arfan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:18:13