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()
)

但是,如果您尝试执行 this,您将收到类似于以下内容的错误:

{
  "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 上一一查询您朋友的好友列表,您将收到相同的错误消息,如此处所述(感谢 Igy 提供此链接)

因此,没有任何方法可以使用现有的 API 来做您想做的事情(当然,除非您为 Facebook 应用程序获得了足够庞大的用户群,您可以使用以下方法逐步构建用户的朋友的朋友图)您的应用程序的众多其他用户的访问令牌 - 但我认为这样的“解决方案”对您没有帮助!)

于 2012-10-24T23:36:32.957 回答