Graph API缺少哪些FQL功能?

时间:2014-05-02 07:34:13

标签: facebook facebook-graph-api facebook-fql facebook-graph-api-v2.0

据说FQL将不再可用:

  

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

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

3 个答案:

答案 0 :(得分: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查询。

EDIT :: ============================================ =

避免增加http请求的方法是使用图形api的nested request语法(正如OP在其评论中指出的那样)。

这允许您链接请求,以便在返回到您的应用程序之前在服务器端执行这些请求。因此,如果在嵌套请求语法中重写,上述请求将变为

  https://graph.facebook.com/v2.0/me?fields=likes.fields(events) 

其中对第一个请求返回的每个页面节点(在示例中,用户喜欢的所有页面)都进行了对事件字段的第二次请求。所以实际上,在这里删除FQL会产生更简洁的查询字符串。

答案 1 :(得分:0)

  

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

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

答案 2 :(得分:0)

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

我肯定知道 -

location_post (也可能签到)

用户表中的 mutual_friends_count字段现在几乎总是返回null(这是整个'你不知道我的朋友改变了谁的结果)