【问题标题】:How to make a Facebook FQL query to select all friends who don't like a page?如何进行 Facebook FQL 查询以选择所有不喜欢页面的朋友?
【发布时间】:2013-08-29 07:42:37
【问题描述】:

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

Facebook FQL 非常强大,但在某些功能上也受到限制。例如,不支持“NOT IN”运算符[来源12]。在做了一些研究之后,似乎有一种方法可以模仿这种行为。我发布的来源有示例,但简而言之,用户可以提交multi-query 以选择不在另一组人(查询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 个朋友。

感谢各位的帮助。非常感谢。

【问题讨论】:

    标签: php facebook facebook-graph-api facebook-fql facebook-php-sdk


    【解决方案1】:

    查询似乎是正确的。我认为您错过了获取用户朋友喜欢所需的权限: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)
    

    会给你更少的没有。结果。

    【讨论】:

    • 感谢您的帮助。就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多