0

重複の可能性:
Facebook で友達の友達のリストを取得する

誰かの友達 (1 レベル)、友達の友達 (2 レベル)、友達の友達の友達 (3 レベル) の数を取得する必要があります。これは FQL または Graph API で可能ですか。

これまでのところ、次の FQL クエリで最初のレベルのカウントを取得できることがわかっています。

SELECT friend_count FROM user WHERE uid = me()

しかし、さらに先に進む方法がわかりません。また、それが可能かどうかさえわかりません。

4

1 に答える 1

6

いいえ、これは Graph API または FQL を使用して行うことはできません。あなたが得ることができる最も遠いものは、次のようにクエリでサブ選択を行うことによって、友人の数など、友人に関連するユーザーテーブルから情報を選択することです。

SELECT uid, friend_count
FROM user
WHERE uid IN (
    SELECT uid1
    FROM friend
    WHERE uid2 = me()
)

しかし、元の質問では 2 レベルにも達しません。なぜなら、あなたの友人の多くには共通の友人がいて、それらの数の合計は、あなたが持っている友人の友人の数よりもはるかに多くなるからです。必要な情報を取得するには、友達の友達の ID のリストを取得し、次のようなクエリを実行して自分でカウントする必要があります。

SELECT uid1
FROM friend
WHERE uid2 in (
    SELECT uid1
    FROM friend
    WHERE uid2 = me()
)

ただし、これを実行しようとすると、次のようなエラーが発生します。

{
  "error": {
    "message": "Can't lookup all friends of 36807322. Can only lookup for the logged in user or the logged in user's friends that are users of your app.", 
    "type": "NoIndexFunctionException", 
    "code": 604
  }
}

また、Graph API でフレンドのフレンド リストを 1 つずつクエリしようとすると、ここで説明されているのと同じエラー メッセージが表示されます(このリンクを提供してくれた Igy に感謝します)。

したがって、既存の API を使用してやりたいことを行う方法はまったくありません (もちろん、Facebook アプリの十分に大規模なユーザー ベースを取得して、ユーザーの友達の友達のグラフを段階的に構築できる場合を除きます)。アプリのの多数のユーザーのトークンにアクセスしますが、そのような「解決策」は役に立たないと思います!)

于 2012-10-24T23:36:32.957 に答える