Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结交朋友的最佳方式';名称:javascript还是服务器?_Javascript_Facebook_Facebook Graph Api - Fatal编程技术网

结交朋友的最佳方式';名称:javascript还是服务器?

结交朋友的最佳方式';名称:javascript还是服务器?,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我正在编写一些代码来处理应用程序邀请请求(FB.ui,method=apprequests),并希望在发送邀请后向用户显示一个包含请求所发送用户的图片和姓名的块。似乎唯一的方法是通过对/me/friends的API调用获取所有用户朋友的姓名,并仔细检查返回的对象,提取每个受邀请用户的姓名。这是游击队 我有一些代码可以这样做,但我有点担心在用户有大量朋友的情况下的性能--/me/friends将返回多达5000个朋友而不调用“next”链接;Facebook表示,平均每个用户有120-130个朋友

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

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

1:在浏览器中用Javascript完成所有操作;这当然是最简单的,但我担心Javascript实现在处理大量好友时的效率——它必须处理一个包含所有好友的相当大的对象,并且会花费大量时间在这个大对象中搜索合适的好友

2:将被邀请者列表发布到我的服务器,该服务器将呼叫FB以获取好友,并构建并返回用户名列表。我的直觉告诉我,服务器将是一个更有能力(=更快,更不容易锁定)的引擎来完成这项工作,也许足够让javascript调用服务器,然后再调用服务器的成本是值得的


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

您不需要查询/me/friends。当您进行FB.ui调用时,会有一个回调,其中包含请求id和(在本例中更重要的是)被邀请用户的fbid。

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



如果你的
apprequests
用于应用内通知,那么你可能会设置一个数据库,并存储用户的FBID引用的用户。你还可以查询自己的数据库,检索用户首次访问时保存的姓名、个人资料图片

您不需要查询/me/friends。当您进行FB.ui调用时,会有一个回调,其中包含请求id和(在本例中更重要的是)被邀请用户的fbid。

您只需调用:
即可直接搜索该用户
https://graph.facebook.com/{FRIEND_FBID}
。 即使使用FQL,这些调用也相对较小,您不必担心性能。使用javascriptsdk的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。

一旦发送应用程序请求,您可以立即执行另一个请求。这就是我们在正在构建的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即可。

这很有帮助;谢谢我现在必须戴上我的半新手帽,问如何打电话给。。。。我可以看到在图形API浏览器中工作;在javascript中,我尝试了$.get(“,function…),但XMLHttpRequest拒绝加载URL时出错(跨域问题?)。尝试FB.api(THEUID,function…)可以得到一个基本的Facebook对象——uid,gender,和其他一些东西,但不是名字。你能澄清一下吗?你的
apprequest
电话已经到了一半了。。。这里有一个链接到我一直在关注的,它没有给我名字。如果我运行(例如)FB.api(“THEUID”,函数(the_result){console.log(the_result);alert(the_result.name)});,显示在console.log中的_结果的值有许多正确的属性,如性别和id,但name不是其中之一。(顺便说一句,在运行之前已经调用了FB.init(…)和一些适当的参数。)有什么见解吗?我是否需要在那里获取访问令牌作为调用的显式部分;您需要正确的权限才能查看有关用户朋友的信息。可以这样说,已解决。在请求处理程序中,我需要回调我的服务器,将请求ID保存在DB中,以便在用户授权应用程序时清除它们。在那里,在graph.fb.com/uid上调用file_get_contents工作得很好,因此我可以获取用户名,将它们与ID配对,通过JSON将整个过程传递回来,让JS完成它的工作。我从来没有能够得到FB.api调用来给我用户名,但是感谢你的指针;谢谢我现在得戴上我的半新手帽,问我该怎么做