我正在寫一個Java應用程序,我需要訪問我的聊天記錄(我和另一個Facebook朋友之間的聊天消息)。我曾看過 this link,但似乎已經過時了,因爲我已經注意到Facebook顯着地改變了他的信使API。我想知道是否仍然可以通過java訪問我的消息歷史記錄。如何使用Facebook Messenger API?
p.s.我發現了一個名爲restfb的好的Facebook Graph API。但我無法爲聊天消息找到這樣的API。
我正在寫一個Java應用程序,我需要訪問我的聊天記錄(我和另一個Facebook朋友之間的聊天消息)。我曾看過 this link,但似乎已經過時了,因爲我已經注意到Facebook顯着地改變了他的信使API。我想知道是否仍然可以通過java訪問我的消息歷史記錄。如何使用Facebook Messenger API?
p.s.我發現了一個名爲restfb的好的Facebook Graph API。但我無法爲聊天消息找到這樣的API。
您可以使用圖形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 - 但以上應該基本上表明你需要做什麼。
謝謝大山!我看着你提供的頁面,樣本是在java腳本和PHP中,但不是java。你能否提供一些關於如何通過REST API在java中完成的指南? – Mohammadreza
自v2.4(2015年7月)https://developers.facebook.com/docs/apps/changelog#v2_4開始,已不推薦使用'read_mailbox'權限,並且從2015年10月6日起不會返回任何結果。 –
[Replacement for Facebook Chat API in v2.0?](http://stackoverflow.com/questions/23988889/replacement-for-facebook-chat-api-in-v2-0) – kevcodez
謝謝。我看了你提到的線程,但仍然不是關於訪問聊天消息「在Java中」。據我所知,解決方法是使用圖形API作爲Dathan提到的,但我仍然不確定是否可以在java中使用它。 – Mohammadreza