はい、ユーザーごとに友達のリストを取得できます。これが私がそれを行う方法です。
登録時に、ユーザーが Facebook に登録すると、その ID がデータベースに保存されます。
認証されたユーザーがレコードの 1 つを表示すると、API を介して次の FQL クエリを発行します。
SELECT uid, name, pic_square, mutual_friend_count FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
AND is_app_user
ORDER BY mutual_friend_count DESC
これにより、現在のユーザーと友達であるアプリの他のユーザーが返されます。これは、アプリ ユーザーと各友達の間の共通の友達数によって並べ替えられます (親しい友達ほど共通の友達の数が多いと仮定します)。
このクエリの結果をデータベースに保存されている Facebook ID と比較することで、このリストをデータベース内の他のメトリクスと比較できます。
友達の友達を表示することは、よりトリッキーな提案です。このクエリを試す場合:
SELECT uid2 FROM friend WHERE uid1 IN
(SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 1)
許可エラーがスローされます。Facebook では、友達の友達を取得することはできません。
アプリにとって重要な場合は、アプリ ユーザーがログインするたびに (または拡張アクセス トークンも要求した場合はスケジュールに従って)、アプリ ユーザーの最新のフレンド リストをそれぞれキャッシュし、このテーブルにクエリを実行して、ユーザーのすべての友達に共通する友達がいます。これがどの程度合法であるかを確認するには、TOS を詳しく調べる必要があります。