检索由具有 FQL 的组主持的事件
Posted
技术标签:
【中文标题】检索由具有 FQL 的组主持的事件【英文标题】:Retrieve events hosted by a group with FQL 【发布时间】:2012-03-16 07:45:17 【问题描述】:我想知道一个组托管的事件如何连接到该组,以便我可以检索特定组中的所有事件(我只有组 ID)。 这需要使用 FQL 和 php SDK 来完成(我知道这些方法,但我无法找到有关组和事件之间连接的任何信息)。
【问题讨论】:
【参考方案1】:同时,GROUP_ID/events 在这里对我来说效果很好。
如果您查看以下内容,则可以使用 REST API: http://developers.facebook.com/docs/reference/rest/events.get/
他们说: “uid 可以替换为 gid,以便获取由组而不是单个用户托管的事件。”
我尝试通过 Graph API Explorer 获取我加入的组的事件,它和我制作的一个小 restFB (Java) 实现一样有效。
那么,这可能是您网站的权限问题吗?
【讨论】:
【参考方案2】:看起来你无法做到这一点。
Group object 的文档没有提及事件集合,如果您尝试从图形 api 获取 /GROUPID/events,则会收到“不支持的获取请求”错误消息。
group table 的 fql 文档也没有关于事件的任何内容,event table 仅由事件 id 索引,这意味着无法在事件和组之间建立联系。
【讨论】:
嗯...没什么新鲜的(我在发布问题之前通过 facebook 文档进行了搜索)。我期待的是我可以做的事情,而不是他们不提供的东西。考虑到事件显示在组页面上的事实,它们之间必须存在某种联系(正如您所说,GRAPH API 不识别/支持 /GROUPID/events 调用)。我正在考虑 FQL,因为它在数据库表级别执行请求,而不是某些 GET 调用(需要 url 解释等)。 Facebook 并没有为您提供它拥有的所有数据/连接,而且我怀疑 fql 表实际上代表真正的数据库表,它只是另一个用于从图中查询数据的 api。可能会问你想对数据做什么?也许还有另一种方法。 任务是获取一个组主持的所有活动(我只有组 ID)并将它们显示在网站上。没那么难,但话又说回来,一点也不容易。 抱歉,在这种情况下,我不知道你是如何做到这一点的。 感谢您的帮助【参考方案3】:直到几周前,以下内容完全可以满足您的需要
SELECT name FROM event WHERE eid IN
(SELECT eid FROM event_member WHERE uid = <uid from group>)
但 api 更改为使用组对象,因此代码不再工作。遗憾的是,我还没有找到其他方法来获取特定组的事件。
【讨论】:
【参考方案4】:Facebook 之前已经打破了这个。 : (
看看我能不能追查到上次我们是如何修复它的。
同时,我能得到的最接近的是:
https://graph.facebook.com/fql?q=SELECT eid, name, host FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid = $uid AND start_time > 0) AND host = '$group_name'&access_token=$token
变量:
$uid = 组管理员的 uid $group_name = 组名 $token = 具有 user_events 权限的上述组管理员的访问令牌我能看到的唯一缺点是:
-
需要身份验证令牌(即使对于公共组);和
必须邀请所使用的管理员参加所有活动(无论如何通常都是这种情况)。如果未邀请管理员,则该活动似乎不会显示。
更新: Facebook 错误报告 - 请添加您的支持,以便我们修复此问题: http://developers.facebook.com/bugs/197158423732088
【讨论】:
【参考方案5】:尝试更新的 Wallflux 事件:http://wallflux.com/events/115227675156013
【讨论】:
以上是关于检索由具有 FQL 的组主持的事件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用图形 api/FQL 从 facebook 获取过去/结束的公共事件?
我如何使用 FQL 查询所有事件而不使用标记为 * 的可索引列