2015-07-05 77 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日起不会返回任何结果。 –

相关问题