1

我正在開發一個獲取Facebook未讀收件箱郵件的應用程序。如何使用Graph API獲取未讀消息?

以下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。請參閱 我們的當前版本信息更新日誌。

所以,我正在尋找一種方法來只使用圖形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

我的意見I gave對不起時,我盲目地引用了以下的Facebook通知:

但是,你不應該使用FQL了:

2.0版Facebook平臺API的是最後一個FQL將可用的版本。 2.0之後的版本不支持FQL。請 遷移您的應用程序以使用Graph API而不是FQL。請參閱 我們的當前版本信息更新日誌。

這種說法是真實的,但遵循它不是很聰明。


事實上,我進一步檢查,發現:

我沒想到Graph API太弱。 Graph API使得不可能通過過濾任何字段來構建請求。例如,我們不能做簡單的事情,如:

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

現在用圖,你就必須通過所有線程迭代和檢查哪一個有unread > 0。你會失去時間和帶寬。此外,message表甚至沒有unread字段,這將使您無法找到任何特定的未讀消息。

所以,最好的是繼續使用FQL。你現在安全。到2016年,Facebook可能會改進我們用Graph API查詢的方式。

拭目以待...

相關問題