如何使用 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 获取未读消息?的主要内容,如果未能解决你的问题,请参考以下文章
Twilio 可编程聊天 — 使应用程序徽章与未读消息计数保持同步
如何使 Azure AD access_token 在 Microsoft Graph API 之外对其签名验证兼容?