Facebook FQL没有返回一些公共事件

时间:2014-03-13 20:15:09

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

我在PHP中使用FQL来自动获取列表中任何扇形页面创建的所有未来(公共)事件。对于大多数页面,该过程完美无缺,但有些页面根本不会返回任何事件。

以下是用于获取某个粉丝页面的所有事件的FQL。在我写这篇文章时,它有一个未来的事件。

SELECT 
        eid, name, pic_cover, start_time, end_time, location, description, attending_count 
    FROM 
        event 
    WHERE 
        eid IN ( SELECT eid FROM event_member WHERE uid = xxxxx ) 
    AND 
        (start_time >= now() OR end_time >= now())
    ORDER BY 
        start_time ASC

您可以使用Facebook的Graph API Explorer来测试此查询。资源管理器允许您通过他们的应用程序或任何您自己的应用程序执行查询。它允许使用应用程序访问令牌或用户访问令牌。

所以这是(令人沮丧的)底线:

  • 当资源管理器使用用户访问令牌通过默认的“Graph API Explorer”应用程序执行此查询时,会找到该事件。
  • 当资源管理器使用应用程序访问令牌通过我自己的任何应用程序执行此查询时,该事件未找到
  • 当资源管理器使用用户访问令牌通过我自己的任何应用程序执行此查询时,会发现 事件。

我非常确定有关事件是公开的。此外,我个人并不喜欢粉丝页面或加入活动。所以我不知道为什么我的用户访问令牌似乎有足够的权限来访问事件,但应用程序访问令牌没有。

你知道吗? :)

注意:相同的代码与其他粉丝页面完美匹配。因此,语法错误等微不足道的错误不是问题所在。

1 个答案:

答案 0 :(得分:1)

这是预期的行为,因为您要查询特定于用户的数据(使用event_member表上的子查询)。

请参阅此处的文档。 https://developers.facebook.com/docs/reference/fql/event_member/#permissions

他们正在陈述

  

非公开活动的 user_events 权限或查看所有活动   用户正在参加

如果您使用Graph API Explorer,则您作为用户授予应用访问数据的权限(用户访问令牌)。

另外,我想知道你的FQL是否真的符合你的要求:子查询中的uid会不会是Page ID?