如何使用 Graph API 获取未读消息?

Posted

技术标签:

【中文标题】如何使用 Graph API 获取未读消息?【英文标题】:How to get unread messages using 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();

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

【问题讨论】:

这有帮助吗?如果是这样,您能否将我的回答标记为已接受? 【参考方案1】:

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

但是,您不应再使用 FQL:

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

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


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

v2.0 可用until August 7th 2016, Graph API 尚不适合您当前的使用。

没想到 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 进行查询的方式。

拭目以待……

【讨论】:

以上是关于如何使用 Graph API 获取未读消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何从mysql获取未读消息

Twilio 可编程聊天 — 使应用程序徽章与未读消息计数保持同步

如何使 Azure AD access_token 在 Microsoft Graph API 之外对其签名验证兼容?

将*单个* IMAP 邮件标记为未读

如何使用 microsoft graph api 获取 EndRecurrenceDate

如何使用 Facebook Graph API 获取群组视频列表?