使用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
相关产品推荐
相关产品推荐

