我正在开发一个应用程序,通过 FQL 从 Facebook 页面检索事件。 有时,这些页面的所有者不会从页面配置文件创建这些事件,而是从他们自己的配置文件创建这些事件,并将事件链接到页面作为字段“地点”(因为我正在寻找的页面是公共(public)场所)
是否可以通过 FQL 或任何其他方式获取以特定 Facebook 页面 ID 作为地点的所有事件 ID?
现在,只有页面所有者使用以下代码通过页面配置文件插入事件,我才能获取所有事件:
$fql = "SELECT eid, creator, name, pic, timezone, start_time, end_time, location, description
FROM event WHERE eid IN ( SELECT eid FROM event_member WHERE uid IN ($clubsstring) )
AND start_time > $today
AND start_time < $nextweek
ORDER BY start_time asc";
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $facebook->api($param);
谢谢 卢卡
最佳答案
嗯,您确实可以根据 field 进行搜索,但这只能是次要条件,因为 field 字段不可索引。
这意味着您首先必须根据 eid(Event
表中唯一可索引的字段)进行搜索,然后根据地点过滤这些结果。
问题是 field 字段是一个数组,并且其中的字段并不总是存在,例如一个事件可能将其作为 field :
"venue": {
"id": VENUE_ID
}
但另一个会有:
"venue": {
"street": "",
"city": "",
"state": "",
"country": ""
}
您应该能够通过以下方式获得您想要的东西:
SELECT eid, creator, name, pic, timezone, start_time, end_time, location, description
FROM event
WHERE
((eid IN (SELECT eid FROM event_member WHERE uid IN ($clubsstring)))
OR
(eid IN (SELECT eid FROM event_member WHERE uid IN (OWNERS_IDS_STRING)))
AND
venue.id IN (VENUE_IDS_STRING))
AND start_time > $today
AND start_time < $nextweek
ORDER BY start_time asc;
我还没有测试过这个查询,您可能需要对其进行一些修改才能工作,您也可以使用 id
之外的不同 field 字段。
希望这有帮助。
关于facebook - FQL : search events from their venue field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812988/