ログインしたユーザーの共通の友達を必要とする 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);
共通の友達を取得するのに 1 秒もかかりません。
2011 年 9 月の時点で、このための新しい API 呼び出しがあります。
今週、2 人のユーザー間の共通の友達のリストを取得できる User オブジェクトの接続を追加しました。これを使用するには、現在のユーザーのアクセス トークンを取得し、GET 要求を次のように発行します。
https://graph.facebook.com/me/mutualfriends/FRIEND_ID
速度が気になる場合は、情報を一度呼び出して、データをキャッシュする方法を見つけることをお勧めします。Facebook は、「合法的に」これを行う機能を提供します。この種のことには memcached を使用するか、データベースに一時的に保存することができます。