如何进行Facebook FQL查询以选择所有不喜欢的朋友;I don’我不喜欢一页纸


How to make a Facebook FQL query to select all friends who don't like a page?

我正在尝试创建一个FQL查询,该查询选择我在美国的所有不喜欢某些Facebook页面的朋友。理想情况下,我想在用户朋友上返回一个选择,并将其排除在喜欢Page X或Page Y的人之外。

Facebook FQL功能非常强大,但在某些功能上也受到限制。例如,不支持"NOT IN"运算符[Source 1和2]。经过一些研究,似乎有一项工作可以模仿这种行为。我发布的消息来源有一些例子,但简而言之,用户可以提交一个多查询来选择不在另一组人中的一组人(查询1)并返回结果。

到目前为止,这是我的FQL查询,但它的行为并不像我希望的那样。有什么帮助或建议吗?

SELECT uid, name, pic_square, current_location FROM user
        WHERE current_location.country = 'United States' AND
        uid IN (
            SELECT uid2 FROM friend WHERE uid1 = me()
        ) AND NOT (
            uid IN (
                SELECT uid FROM page_fan WHERE uid IN (
                    SELECT uid2 FROM friend WHERE uid1 = me()
                ) AND (page_id=40796308305 OR page_id=56381779049)
            )
        )

这应该是:选择所有生活在美国,不喜欢可口可乐或不喜欢百事可乐的朋友。

我看到的其他解决方案是循环浏览朋友,获取他们的赞,并通过循环浏览列表来构建自己的数据结构。我可以这样做,但这是相当耗时的请求量——尤其是当用户有2-4k个朋友时。

谢谢你们的帮助。非常感谢。

查询似乎是正确的。我认为您错过了获取用户朋友点赞所需的权限:friends_likes,在这种情况下,您的最后一个查询-

SELECT uid FROM page_fan WHERE uid IN (
                SELECT uid2 FROM friend WHERE uid1 = me()
            ) AND (page_id=40796308305 OR page_id=56381779049)

会给你更少的结果。