获取一组朋友名字的最佳方式:javascript还是服务器?



我正在编写一些代码来处理应用程序邀请请求(FB)。Ui, method = apprequests),并希望在发送邀请后向用户显示一个块,其中包含发送请求的用户的图片和名称。这样做的唯一方法似乎是通过对/me/friends的API调用获取所有用户朋友的名字,并仔细检查返回的对象,提取每个被邀请用户的名字。

我有一些代码这样做,但我有点担心在用户有大量朋友的情况下的性能——/me/friends将返回多达5000个朋友而不调用"下一个"链接;Facebook表示,用户平均拥有120-130个好友。似乎有两种方法可以处理这个问题:

1:在浏览器中用Javascript完成;这无疑是最直接的,但我担心Javascript实现在处理大量好友时的效率——它将不得不处理一个包含所有好友的相当大的对象,并且将花费大量时间在该大对象中搜索以寻找正确的对象。

2:将受邀者列表发送到我的服务器,这将调用FB获取好友并构造并返回用户名列表。我的直觉告诉我,服务器将是一个更有能力(=更快,更不容易锁定)的引擎来做这些事情,也许足以让它值得从javascript调用到服务器并再次调用的成本。

但是,说实话,我真的不知道。有什么意见吗,希望是见多识广的?我可以用任何一种方法,但如果有什么类似于最佳实践的东西,我愿意遵循它。谢谢!

不需要查询/me/friends。当你做FB时。UI调用,有一个回调包含request_id's和(更重要的是,在这种情况下)fbid的用户被邀请。

您可以直接搜索该用户,只需调用:
https://graph.facebook.com/{FRIEND_FBID}。即使使用FQL,这些调用也相对较小,您不必担心性能问题。使用Javascript SDK的Ajax调用可以很好地工作,将请求参数发布到服务器并在服务器上执行也可以。他们确实需要一些时间……但其实没什么好担心的。


如果你的apprequests被用于应用程序通知,那么你可能需要建立一个数据库,并存储由他们的FBID引用的用户,你也可以查询你自己的数据库并检索用户第一次访问时保存的名称,个人资料图片。

发送应用程序请求后,您可以立即执行另一个请求。这是我们在我们正在构建的Facebook应用程序中所做的:

FB.ui(app_request_options, function(response) {
  if (response && response.request_ids && (! response.error)) {
    //Make another call to get the profile information
    FB.api('', {"ids" : response.request_ids.join(',')}, function(response2) {
      if (response2 && (! response2.error))  {
        for (request_obj in response2) {
          //Do stuff... Update UI, post back to server, etc.
        }
     }
 }

我们将这些信息发送回服务器,但是你可以用名字,头像等更新UI

最新更新