【问题标题】:How to get unread messages using Graph API?如何使用 Graph API 获取未读消息?
【发布时间】:2014-07-24 17:24:44
【问题描述】:

我正在开发一个接收 Facebook 未读收件箱消息的应用程序。

以下 v2.0 FQL 查询工作正常:

SELECT sender, body FROM unified_message 
   WHERE thread_id IN 
         (SELECT thread_id FROM unified_thread WHERE folder = 'inbox' AND unread=1) 
     AND unread=1 
ORDER BY timestamp DESC

因此,我们得到了所有未读消息的列表。


但是,Facebook says:

Facebook 平台 API 2.0 版是 FQL 的最后一个版本 将可用。 2.0 之后的版本将不支持 FQL。请 迁移您的应用程序以使用 Graph API 而不是 FQL。请参见 当前版本信息的更新日志。

所以,我正在寻找一种仅使用 Graph API 的方法。我尝试了以下方法:

Bundle params = new Bundle();
    params.putString("unread", ">0");
    new Request(session,"/me/inbox/",params,HttpMethod.GET,new Request.Callback() {
        public void onCompleted(Response response) {
            ...
        }
    }  
).executeAsync();

没有成功。我得到所有线程,而我只需要未读线程。那该怎么做呢?

【问题讨论】:

  • 这有帮助吗?如果是这样,您能否将我的回答标记为已接受?

标签: java android facebook facebook-graph-api facebook-field-expansion


【解决方案1】:

我很抱歉在我盲目引用以下 Facebook 通知时I gave 的建议:

但是,您不应再使用 FQL:

Facebook 平台 API 2.0 版是 FQL 可用的最后一个版本。 2.0 之后的版本将不支持 FQL。请 迁移您的应用程序以使用 Graph API 而不是 FQL。请参见 当前版本信息的更新日志。

这句话是对的,但要遵循它并不是很聪明。


确实,我进一步检查发现:

没想到 Graph API 这么弱。 Graph API 使得无法通过过滤任何字段来构建请求。例如,我们不能做一些简单的事情,例如:

  • me/threads?unread_count>0,
  • me/threads?fields=unread_count.more(0)

现在使用 Graph,您必须遍历 所有 线程并检查哪个线程有 unread > 0。你会浪费时间和带宽。此外,message 表甚至没有 unread 字段,这将使您无法找到任何特定的未读消息。

所以,最好继续使用 FQL。你现在是安全的。到 2016 年,Facebook 可能会改进我们使用 Graph API 进行查询的方式。

拭目以待……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多