如何通过Facebook API获得喜欢的朋友

max*_*nev 13 facebook facebook-fql facebook-graph-api

这有可能让我所有的朋友都喜欢吗?现在,我通过两个步骤得到这个:

  1. 得到我所有朋友的名单
  2. 通过迭代这些列表我得到所有人喜欢,

但这似乎是一个非常大的过程,任何人都有想法改善这项任务的性能?

dup*_*dup 14

最后我在2周后发现了Facebook API文档

FB.api("/likes?ids=533856945,841978743")

FB.api("me/friends",{
  fields:'id',
  limit:10
},function(res){
  var l=''
  $.each(res.data,function(idx,val){
     l=l+val.id+(idx<res.data.length-1?',':'')
  })
  FB.api("likes?ids="+l,function(res){
      console.log(res);
  })
})
Run Code Online (Sandbox Code Playgroud)


Car*_*son 5

使用FQL比循环通过Graph API结果更快.您可以获取朋友喜欢的页面的ID,但遗憾的FQL是不会返回除此之外的信息(即名称).看一下以下内容.

这假设您正在使用带有friends_likes权限的PHP SDK .

// hold on to your user ID
$user_id = $facebook->getUser();

// query your friend's likes based on their ID
$query = "SELECT uid, page_id FROM page_fan WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = $user_id)";
$result = $fb->api(array(
  'method' => 'fql.query',
  'query' => $query,
));

// optionally group the results by each friend ID
function arraySort($input, $sortkey){
  foreach ($input as $key => $val) {
    $output[ $val [ $sortkey ] ][] = $val;
  }
  return $output;
}
$friendLikes = arraySort($result,'uid');

// output the results
echo sprintf('<pre>%s</pre>', print_r($friendLikes,TRUE));
Run Code Online (Sandbox Code Playgroud)

这样做的好处是您只能进行一次API调用.您必须单独调用以获取朋友的名称,而另一个调用喜欢的页面详细信息,但您现在可以通过简单的方法使用ID.