Facebook好友检索

时间:2012-10-28 11:09:02

标签: c# .net facebook facebook-graph-api

回到facebook c#sdk并总是在这里和那里找到一些变化。 想要正确访问访问令牌,现在我想为用户计算朋友数量。

这是我现有的代码。

string accessToken = ViewState["accessToken"].ToString();
Facebook.FacebookClient fb = new FacebookClient(accessToken);
var me = fb.Get("/me/friends");

现在我给了我json格式的朋友列表,它有两个键 一个是“数据”,另一个是“分页”。

如何继续吸引所有朋友,至少算上朋友?

感谢您的输入

2 个答案:

答案 0 :(得分:2)

我已经使用了FB的Graph API Explorer,并且可以添加其他网址参数,即“limit = number”和“offset = number”。似乎当你没有指定那些时,FB将返回MAX允许的朋友数量(5000)。它仍然会给你“分页”键,但当你点击链接时,第二页上没有朋友。

你可以这样做:

var me = fb.Get("/me/friends?limit=5000&offset=0");

确保将来默认限制不会更改为某个小值。

所以你的问题的答案是:
使用上面的查询,不用担心分页,解析从FB返回的JSON并计算“data”数组中的对象数。 更具防御性的是,您还可以向paging.next发出请求并按照该URL检查下一页是否还有其他朋友(这不应该发生,因为有5000个限制)。

答案 1 :(得分:2)

谢天谢地自己解决了..这是怎么回事。希望它可以从这个链接中获得许多头部攻击

Facebook dynamic object

这是我的代码,我想这对喜欢/评论等也很好。

 dynamic friends = fb.Get("/me/friends?limit=5000&offset=0");

            Dictionary<string, string> resultList = new Dictionary<string, string>();



            foreach (var item in friends.data)
            {
                var newdata=item;
                string item1 = newdata[0].ToString();
                string item2 = newdata[1].ToString();

                if (resultList.ContainsKey(item1))
                {
                    item1 = item1 + "duplicate";  
                }

                resultList.Add(item1,item2);
            }

containsKey是为了避免抛出异常,因为一些书呆子具有相同名称的配置文件。

这里的最后一件事是它仍然让我的回报比实际的朋友列表数量还要小,为什么...... :(