2012-10-28 67 views
0

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

这是我现有的代码。

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

现在我给我其中有两个密钥 一个是“数据”等是“分页” JSON格式的好友列表。

我该如何着手让所有的朋友和至少有数的朋友?

感谢

回答

2

我用FB的Graph API Explorer并有额外的URL参数,你可以添加到这个查询,即“限=号”和“偏移=号”的投入。看来,如果你不指定这些,那么FB将返回最大允许的朋友数(5000)。它仍然会给你“分页”键,但是当你按照链接在第二页上没有朋友。

你可以这样做:

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

,以确保默认限制没有改变在未来一些小的值。

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

+0

是的,我得到的数据正确..接下来的重要一步是我如何去反序列化它,因为我没有找到fb客户端的任何反序列化选项。 –

+0

看到这么回答[JSON反序列化在C#](http://stackoverflow.com/questions/7895105/json-deserialize-c-sharp) –

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是避免一些书呆子具有相同名称的配置文件引发异常..

最后一件事这里是它仍然返回我比实际的好友列表中算较低不知道为什么.. :(