Facebook FQL不返回一些公开事件


Facebook FQL not returning some public events

我在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测试这个查询。资源管理器允许您通过它们的应用程序或您自己的任何应用程序执行查询。它允许使用应用程序访问令牌或用户访问令牌。

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

  • 当资源管理器使用用户访问令牌通过默认的"图形API资源管理器"应用程序执行此查询时,将找到该事件。
  • 当资源管理器使用应用程序访问令牌通过我自己的任何应用程序执行此查询时,事件是未找到
  • 当浏览器使用用户访问令牌通过我自己的任何应用程序执行此查询时,事件找到。
我很确定所讨论的事件是公开的。另外,我个人不喜欢这个粉丝页面,也不参加这个活动。因此,我不知道为什么我的用户访问令牌似乎有足够的权限访问事件,但应用程序访问令牌没有。

你知道吗?:)

注意:相同的代码与其他粉丝页面完全相同。所以像语法错误这样的小错误不是问题。

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

查看这里的文档。

https://developers.facebook.com/docs/reference/fql/event_member/权限

他们在说

user_events非公共事件或查看所有事件的权限用户正在参加

如果你使用图形API资源管理器,你作为一个用户授予应用程序访问你的数据的权限(用户访问令牌)。

另外,我想知道你的FQL是否真的是你想要的:你的子查询中的uid是页面ID吗?