Facebook Open Graph Friend Array结果有限

时间:2012-10-19 18:41:51

标签: facebook facebook-graph-api pagination

我正在使用开放图形api检索用户朋友ID的数组。

 $friends = $facebook->api('/me/friends?limit=2000');
 $friendsList = array();
            foreach ($friends as $key=>$value) 
            {
               foreach ($value as $fkey=>$fvalue) {

                   $friendsList[] = $fvalue[id];
               }

            }

我遇到的问题是,无论我放入限制内容,我只会为拥有超过500个朋友的用户收到最多500个朋友ID值。我一直在阅读Facebook开发者信息中的限制和分页,但没有运气。

关于检索所有用户的朋友ID需要做什么的任何想法?为什么数组中的最后一个值显示为“h”?所有其他值都是id。

感谢!!!

2 个答案:

答案 0 :(得分:3)

  

为什么数组中的最后一个值显示为“h”?

因为你在循环中进行循环。

在外部循环中,您将迭代实际API响应的两个属性 - datapaging

然后,在内部循环中,您将浏览这些属性指向的每个数组。这是以名称和身份的形式出现的很多结果;然后内部循环第二次遍历paging属性指向的数组,并且只有一个属性具有名称/ key next和值https://graph.facebook.com/…

现在,由于您正在使用$fvalue[id]对第一个值尝试基于索引的访问,因为$fvalue实际上包含文本文字https://graph.facebook.com/…,并且没有名为{{1}的内容声明,PHP首先解释,好像id一样,然后将此字符串值转换为整数"id",以便在0上进行基于索引的访问。这样就可以了 - 因为PHP还允许在基于索引的字符串变量中访问字节( not 字符) - 第一个字节,其ASCII表示形式为字符$fvalue ...


所以,你想要做的事情实际上只是循环一次,而是直接覆盖h的内容。

答案 1 :(得分:1)

如果您只需要facebook id,那么您应该尝试使用id字段,它应该返回所有朋友ID。有了这个我记得我的应用程序处理了一个有1500个朋友的用户。

$friends = $facebook->api('/me/friends?fields=id');