2

据说FQL将不再可用:

FQL 在 2.0 版本中仍然可用,但在下一版本的平台中将不可用。发出此早期警告,以便开发人员可以尽快开始从 FQL 迁移到 Graph API。 https://developers.facebook.com/docs/apps/upgrading

如果您需要将 FQL 查询迁移到 Graph API,您可能会遇到哪些陷阱?

4

3 回答 3

1

在我看来,问题在于您需要为相同的结果执行更多 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 会产生一个更简洁的查询字符串。

于 2014-05-16T20:48:58.577 回答
0

如果您需要将 FQL 查询迁移到 Graph API,您可能会遇到哪些陷阱?

因此没有陷阱,您从 fql 表访问的基本和相关字段也可用于 Graph API 端点。但是,是的,某些领域可能不是 - 唯一的陷阱!

于 2014-05-02T08:00:08.703 回答
0

事实上,有些表已被弃用。

我当然知道——

location_post(以及可能的签到)

users 表中的mutual_friends_count 字段现在几乎总是返回null(我想这是整个“你不知道谁是你的朋友”变化的结果)

于 2014-05-04T09:45:48.630 回答