0

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

这是我现有的代码。

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

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

我如何着手获得所有朋友和至少数个朋友?

感谢您的投入

4

2 回答 2

2

我使用了 FB 的Graph API Explorer,您可以在此查询中添加额外的 url 参数,即“limit=number”和“offset=number”。似乎当您不指定这些时,FB 将返回 MAX 允许的朋友数(5000)。它仍然会给你“分页”键,但是当你点击链接时,第二页上没有朋友。

你可以做:

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

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

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

于 2012-10-28T11:20:37.173 回答
2

谢天谢地,我自己解决了这个问题。这就是方法。希望它可以节省很多人从这个链接中得到它

Facebook 动态对象

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

 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 是为了避免抛出异常,因为某些书呆子具有相同名称的配置文件..

最后一件事是它仍然给我返回的数量比我实际的朋友列表少,不知道为什么.. :(

于 2012-10-28T11:46:49.407 回答