我正在开发一个获取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 Platform 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();
没有成功。我获得所有线程,而我只需要未读线程。那怎么办?
答案 0 :(得分:2)
当我盲目引用以下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查询的方式。
等等......