如何使用Facebook Messenger API?

时间:2015-07-05 18:49:27

标签: java facebook chat

我正在编写一个java应用程序,我需要访问我的聊天记录(我和另一个Facebook好友之间的聊天消息)。我看过了 this link,但似乎已经过时,因为我注意到Facebook显着改变了他的信使API。我想知道是否仍然可以通过java访问我的消息历史记录。

P.S。我发现了一个名为restfb的好的Facebook Graph API。但我无法为聊天消息找到这样的API。

1 个答案:

答案 0 :(得分: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 - 但上面应该基本上表明你需要做什么。