我正在制作一个 Facebook 应用程序,我需要登录用户的共同朋友。旧 APIfriends.getMutualFriends
可以完成这项工作,但速度很慢。我想知道是否有任何其他方法可以获得共同朋友的名单。
而且,像 SocialGraph 这样的应用程序加载速度非常快,那么他们使用什么功能可以这么快地抓住共同的朋友呢?
我正在制作一个 Facebook 应用程序,我需要登录用户的共同朋友。旧 APIfriends.getMutualFriends
可以完成这项工作,但速度很慢。我想知道是否有任何其他方法可以获得共同朋友的名单。
而且,像 SocialGraph 这样的应用程序加载速度非常快,那么他们使用什么功能可以这么快地抓住共同的朋友呢?
我找到了解决方案:)
使用friends.getMutualFriends,它需要n^3 API,这是一个巨大的数字。我也尝试了 areFriends,但也没有更好。所以我通过 FQL 查询获取数据如下:
//Create Query
$params = array(
'method' => 'fql.query',
'query' => " SELECT uid1, uid2 FROM friend
WHERE uid1 IN
(SELECT uid2 FROM friend WHERE uid1= $match)
AND uid2 IN
(SELECT uid2 FROM friend WHERE uid1= $match)",
);
//Run Query
$result = $facebook->api($params);
不到一秒就搞定了共同好友!
截至 2011 年 9 月,对此有一个新的 api 调用:
本周我们为 User 对象添加了一个连接,它允许您获取两个用户之间的共同好友列表。要使用它,只需获取当前用户的访问令牌并发出 GET 请求:
https://graph.facebook.com/me/mutualfriends/FRIEND_ID
如果您担心速度,我建议您调用一次信息并找到缓存数据的方法。Facebook 现在为您提供了“合法”这样做的能力。您可以将 memcached 用于此类事情或将其临时保存在数据库中。