【发布时间】:2015-06-05 07:43:12
【问题描述】:
这样可以让我所有的朋友都喜欢吗?现在,我分两步完成:
- 获取我所有的朋友列表
- 通过迭代这些列表,我得到了所有个人的赞,
但这似乎是一个很大的过程,有人有想法提高这项任务的性能吗?
【问题讨论】:
标签: facebook facebook-graph-api facebook-fql
这样可以让我所有的朋友都喜欢吗?现在,我分两步完成:
但这似乎是一个很大的过程,有人有想法提高这项任务的性能吗?
【问题讨论】:
标签: facebook facebook-graph-api facebook-fql
在查看 Facebook API 文档 2 周后,我终于找到了它
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);
})
})
【讨论】:
使用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));
这样做的好处是您只需进行一次 API 调用。您必须分别调用以获取朋友姓名和另一个调用以获取喜欢的页面详细信息,但您现在可以直接使用这些 ID。
【讨论】:
我相信这是唯一的方法。几周前我看过这个问题。不要认为他们改变了 API。
http://developers.facebook.com/docs/reference/api/
编辑: 我不确定我是否理解你的意思......如果你的意思是你想获得用户喜欢的帖子列表,你需要做的是:
这是你想要的吗?
【讨论】: