据说FQL将不再可用:
FQL 在 2.0 版本中仍然可用,但在下一版本的平台中将不可用。发出此早期警告,以便开发人员可以尽快开始从 FQL 迁移到 Graph API。 https://developers.facebook.com/docs/apps/upgrading
如果您需要将 FQL 查询迁移到 Graph API,您可能会遇到哪些陷阱?
据说FQL将不再可用:
FQL 在 2.0 版本中仍然可用,但在下一版本的平台中将不可用。发出此早期警告,以便开发人员可以尽快开始从 FQL 迁移到 Graph API。 https://developers.facebook.com/docs/apps/upgrading
如果您需要将 FQL 查询迁移到 Graph API,您可能会遇到哪些陷阱?
在我看来,问题在于您需要为相同的结果执行更多 api 请求。
如果您想查找您关注的页面已发布的所有事件,您可以运行以下 fql 查询:
SELECT eid, name, start_time, end_time, location, venue, description
FROM event WHERE eid IN ( SELECT eid FROM event WHERE creator IN
(SELECT page_id FROM page_fan WHERE uid = 'YOUR_UID') )
ORDER BY start_time desc AND start_time > now()
这将一起返回所有事件。要在图形 api 中复制它,您需要发出更多请求。因此,使用以下伪代码:
my_likes = request /me/likes
for each page_id in my_likes
events[page_id] = request /{page_id}/events
我们收到一个对您的页面列表的请求,然后对每个页面(可能有数百个)发出一个请求,而不是在第一个示例中只有一个 fql 查询。
编辑::==============================================
避免http请求增加的方法是使用graph api的嵌套请求语法(正如OP在他的评论中指出的那样)。
这允许您链接请求,以便它们在返回到您的应用程序之前在服务器端执行。所以上面的请求,如果用嵌套请求语法重写,就变成了
https://graph.facebook.com/v2.0/me?fields=likes.fields(events)
在第一个请求返回的每个页面节点上对 events 字段进行第二个请求(在示例中是用户喜欢的所有页面)。所以事实上,这里去掉 FQL 会产生一个更简洁的查询字符串。
如果您需要将 FQL 查询迁移到 Graph API,您可能会遇到哪些陷阱?
因此没有陷阱,您从 fql 表访问的基本和相关字段也可用于 Graph API 端点。但是,是的,某些领域可能不是 - 唯一的陷阱!
事实上,有些表已被弃用。
我当然知道——
location_post(以及可能的签到)
users 表中的mutual_friends_count 字段现在几乎总是返回null(我想这是整个“你不知道谁是你的朋友”变化的结果)