2015-07-05 78 views
-2

我正在寫一個Java應用程序,我需要訪問我的聊天記錄(我和另一個Facebook朋友之間的聊天消息)。我曾看過 this link,但似乎已經過時了,因爲我已經注意到Facebook顯着地改變了他的信使API。我想知道是否仍然可以通過java訪問我的消息歷史記錄。如何使用Facebook Messenger API?

p.s.我發現了一個名爲restfb的好的Facebook Graph API。但我無法爲聊天消息找到這樣的API。

+0

[Replacement for Facebook Chat API in v2.0?](http://stackoverflow.com/questions/23988889/replacement-for-facebook-chat-api-in-v2-0) – kevcodez

+0

謝謝。我看了你提到的線程,但仍然不是關於訪問聊天消息「在Java中」。據我所知,解決方法是使用圖形API作爲Dathan提到的,但我仍然不確定是否可以在java中使用它。 – Mohammadreza

回答

2

您可以使用圖形API的inbox資源:https://developers.facebook.com/docs/graph-api/reference/v2.3/user/inbox

編輯

爲了使用這種從Java,您需要先遵循登錄說明在https://developers.facebook.com/docs/facebook-login/v2.3。這是一個足夠大的操作,我會假設你已經完成了它 - 這遠遠超出了這個答案的範圍(但是如果你看,我確信還有其他問題可以在StackOverflow中充分處理它)。

一旦您獲得了特定會話的訪問令牌(您可以通過訪問https://developers.facebook.com/docs/graph-api/reference/v2.3/user/inbox,點擊圖表資源管理器按鈕,點擊「獲取令牌」 - >「獲取訪問令牌」來獲得訪問令牌,並確保「 read_mailbox擴展權限「下選擇」),這是非常簡單的讀取API,您可以只使用標準的JDK類做它在短短的幾行:

String accessToken = "replaceThisWithAccessToken"; 
    String urlString = MessageFormat.format("https://graph.facebook.com/v2.3/me/inbox?access_token={0}&&format=json&method=get", 
      accessToken); 
    URL url = new URL(urlString); 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream())); 
    String line; 
    while ((line = bufferedReader.readLine()) != null) { 
     System.out.println(line); 
    } 
    bufferedReader.close(); 

這掩蓋了很多東西 - 沒有按沒有認證的幫助,假設你的主動信任存儲庫包含Facebook SSL證書(它應該)的證書路徑,並忽略正確的錯誤處理。實際上,你會想使用RestClient或一些類似的,而不是直接使用URL - 但以上應該基本上表明你需要做什麼。

+0

謝謝大山!我看着你提供的頁面,樣本是在java腳本和PHP中,但不是java。你能否提供一些關於如何通過REST API在java中完成的指南? – Mohammadreza

+3

自v2.4(2015年7月)https://developers.facebook.com/docs/apps/changelog#v2_4開始,已不推薦使用'read_mailbox'權限,並且從2015年10月6日起不會返回任何結果。 –

相關問題