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

时间:2011-12-02 21:27:39

标签: javascript facebook facebook-graph-api

我正在编写一些代码来处理应用程序邀请请求(FB.ui,method = apprequests),并希望在发送邀请后向用户显示一个块,其中包含用户的图片和名称请求已发送。似乎唯一的方法是通过API调用/ me / friends获取所有用户的朋友的名字,并通过返回的对象进行咀嚼,为每个受邀用户提取名称。 C'est la guerre。

我有一些代码这样做,但是我担心在用户拥有大量朋友的情况下的性能 - /我/朋友将返回最多5000个朋友而不会打电话给'下一个'链接; Facebook表示普通用户大约有120-130位朋友。似乎有两种方法可以解决这个问题:

1:在Javascript浏览器中完成所有操作;这肯定是最直接的,但我担心Javascript实现在处理大量朋友时的效率 - 它必须处理包含所有朋友的相当大的对象,并且会花费大量的时间搜索那个寻找正确对象的大型物体。

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

但是,说实话,我真的不知道。有什么意见,希望知情的?我可以这样做,但如果有类似于最佳实践的东西,我想跟随它。谢谢!

2 个答案:

答案 0 :(得分:2)

您无需查询/我/朋友。当您进行FB.ui调用时,会有一个回调,其中包含request_id和(更重要的是在这种情况下)被邀请的用户的fbid。

您只需拨打以下电话即可直接搜索该用户:
https://graph.facebook.com/{FRIEND_FBID}。 即使使用FQL,这些调用也相对较小,您不必担心性能。使用Javascript SDK的Ajax调用可以正常工作,就像将请求参数发布到服务器并在那里执行它们一样。 他们确实需要一些时间......但你真的不必担心。


如果您的apprequests用于应用程序通知,那么您可能已经设置了数据库并存储了他们的FBID引用的用户,您也可以查询自己的数据库并检索您保存的名称,个人资料图片对用户的第一次访问。

答案 1 :(得分:1)

发送应用请求后,您可以立即执行其他请求。这就是我们如何在我们正在构建的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.
        }
     }
 }

我们会将该信息发回服务器,但您只需使用名称,个人资料图片等更新用户界面。