查找公共事件的 FQL 查询

Posted

技术标签:

【中文标题】查找公共事件的 FQL 查询【英文标题】:FQL query for finding public event 【发布时间】:2012-06-08 12:44:47 【问题描述】:

我想执行 FQL 查询以检索特定区域中的所有公共事件(使用经度、纬度和最大距离或仅使用位置名称)。不知道有没有可能?

显然,有人能够做到这一点,不知何故:http://elmcity.info/fb_events?location=tokyo

【问题讨论】:

Get event list based on location的可能重复 您会在这个问题中找到答案。 facebook.***.com/questions/9339936/…希望它仍然有效! 【参考方案1】:

确实可以使用基于位置的“搜索”接收事件 为此,您需要您要搜索的位置的经度和纬度坐标以及具有 user_events 权限的 access_token(我认为您也可以使用公共搜索)

这是一个 FQL 示例,您如何获取某个位置附近的所有事件。 (从您和您朋友的活动中搜索):

$lat = "40";
$long = "30";

// using offset gives us a "square" on the map from where to search the events
$offset = 0.4;

$events = 'SELECT pic_big, name, venue, location, start_time, eid FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND start_time > '. $created_time .' OR uid = me()) AND start_time > '. $created_time .' AND venue.longitude < \''. ($long+$offset) .'\' AND venue.latitude < \''. ($lat+$offset) .'\' AND venue.longitude > \''. ($long-$offset) .'\' AND venue.latitude > \''. ($lat-$offset) .'\' ORDER BY start_time ASC '. $limit;

诀窍本身在于场地.经度和场地.纬度的使用。要从城市获取事件,只需获取城市坐标并根据需要调整偏移量。 如果您不知道如何使用 FQL,请查看Facebook php SDK

【讨论】:

【参考方案2】:

我现在正在努力解决同样的问题。看起来不可能。我看到了几个问题:

pageplace 表中无法搜索位置字段, 事件位置的填充方式不一致:请参阅this page's events for an example。 (我个人填充了其中的大部分。这些是 FB 更改,而不是用户错误。), FQL 没有可根据计算结果查询的AS 语句,并且 Facebook 将查询返回的项目数量限制为相当低的值。

所引用的站点似乎要做的是查询event.description 以获取输入字符串的存在。查询“宜家”,你会得到很多结果。绝对不是地理搜索。 (顺便说一句,该网站的源代码在GitHub)。

编辑:

好吧,我错了。 Facebook 确实公开了一种搜索方法,但仅限于Graph API。使用batch request 功能,您可以执行一系列请求:

在已知纬度/经度的距离(以米为单位)内查找所有place 条目。图形 api 接受 q=* 作为搜索字符串以返回所有地点。 查询event以查找上面返回的地点的所有事件。

我要玩这个。随着我更好地充实这段代码,我会再次更新这篇文章。

【讨论】:

你完全正确。我真的不明白为什么将研究限制在描述领域。那个 API 会更强大! facebook.***.com/questions/9339936/… 有一种按位置获取事件的好方法。希望它仍然有效! @DMCS 这很好。我得试试看它是否仍然有效。 我试过了: 1)是我的印象,还是太慢了? 2)它使您可以仅检索您的朋友要去的事件。这是相当有限的。总比没有好 @cpilko,您可以在某些东西开始工作后立即发布一个示例吗?如果我能做对,我也会这样做。谢谢!【参考方案3】:

试试这个对我有用的代码返回即将到来的公共活动的所有细节,其中包含一个特定的关键词,可以是你的位置

SELECT eid,name,description,venue,creator,location,ticket_uri,start_time, eid,host,not_replied_count,pic_square,pic_big,unsure_count,attending_count,declined_count,all_members_count FROM event WHERE start_time > now() AND CONTAINS("your location name") AND privacy='open'

【讨论】:

【参考方案4】:

我相信在http://elmcity.info/fb_events?location=tokyo 中,他们并没有真正搜索东京的活动,他们只是执行这样的查询

https://graph.facebook.com/search?type=event&q=tokyo

(需要访问令牌,请参阅https://developers.facebook.com/tools/explorer?method=GET&path=search%3Ftype%3Devent%26q%3Dhaifa)

请注意,此网址也可以使用 http://elmcity.info/fb_events?location=sport

我也在寻找一种使用 fql 检索公共事件的方法,但到目前为止我没有找到任何方法。

【讨论】:

以上是关于查找公共事件的 FQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

如何使用图形 api/FQL 从 facebook 获取过去/结束的公共事件?

获取没有客户端身份验证的页面的公共事件列表

FQL 事件 pic_cover 返回 null

FQL 查询和 Graph API 对象访问的区别

FQL 查询未返回所有数据

Facebook FQL 查询错误 604,但字段可索引