我需要得到某人的朋友(1级),他们朋友的朋友(2级)以及他们朋友的朋友(3级)的数量。这可能是使用FQL或Graph API,如果是这样,怎么做?
到目前为止,我知道我可以使用此FQL查询获得第一级计数:
SELECT friend_count FROM user WHERE uid = me()
但我不确定如何进一步,或者即使有可能这样做。
答案 0 :(得分:6)
不,使用Graph API或FQL无法做到这一点。您可以获得的最远的是通过在您的查询中进行子选择来选择用户表中与您的朋友相关的信息,例如他们的朋友数量:
SELECT uid, friend_count
FROM user
WHERE uid IN (
SELECT uid1
FROM friend
WHERE uid2 = me()
)
但是这在你的原始问题中甚至没有达到2级,因为你们中的许多朋友会有朋友的共同点,所以这些数量的总和将远远超过朋友的朋友数量你有。为了获得您需要的信息,您需要做的是提取朋友的朋友列表,然后通过执行这样的查询来自己计算
SELECT uid1
FROM friend
WHERE uid2 in (
SELECT uid1
FROM friend
WHERE uid2 = me()
)
但是,如果您try to execute 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
}
}
如果您尝试在图谱API上逐个查询朋友的朋友列表,您将收到相同的错误消息,如here所述(感谢Igy提供此链接)。
因此,没有办法使用现有的API做你想做的事情(当然,除非你为你的Facebook应用程序获得足够大的用户群,你可以逐步构建用户朋友的图表朋友使用访问令牌为您的应用程序的众多其他用户 - 但我认为这样的“解决方案”对您没有帮助!)