使用 RestFB 和 Graph API 2.6 阅读 Facebook(私人)消息

Read Facebook (private) messages with RestFB & Graph API 2.6

我正在尝试构建一个 Java 桌面应用程序,该应用程序将使用 RestFB 库登录到 Facebook 的服务器,从用户与之交谈过的最后 10 个人中获取最后 25 条消息,并显示如果他们的名字被称为弹出窗口。

到目前为止,我必须使用应用程序的 appID 和 appSecret 登录 Facebook,并获得一个令牌。

我的问题是:在官方 Graph API 文档中,他们说 "read_mailbox" 功能现在已过时,并且仅适用于用户为管理员的页面。他们还说它在 Graph API 2.4(我使用的是 2.6)之后被删除了。我如何使用 Graph API 2.6 读取用户的私人消息?请注意,当我搜索消息时,我不会知道用户与之交谈的最后 10 个人。这个问题已经回答了,但是对于那个解决方案,你必须知道 conversationID(我想获取,而不是提供)

read_mailbox 权限仅在您想要访问某个用户的邮箱时使用。页面邮箱需要read_page_mailbox权限。

Facebook 用户应该使用 Facebook Messenger,这就是该权限被弃用的原因,您可以在该权限的描述中找到此部分

This permission is granted to apps building a Facebook-branded client on platforms where Facebook is not already available. For example, Android and iOS apps will not be approved for this permission. In addition, Web, Desktop, in-car and TV apps will not be granted this permission.

除此之外,技术部分应该像这样工作:

首先你需要对话。它们按 updated_time 排序,因此您可以按正确的顺序获得最后的对话。您只需要前 10 个对话 ID。

me/conversations?limit=10&fields=updated_time

然后您获取每个对话 ID 并获取消息。例如这个调用:

<conversationid>/messages?limit=25

作为一些提示,您可以使用这些字段并使用如下调用:

me/conversations?fields=messages.limit(25)&limit=10

一次通话即可获得您想了解的所有信息,但也许请求的数据太多,而 Facebook returns 是个例外。这就是为什么我提出第一种获取数据的方法。

您可以通过查看文档将这些调用转换为 RestFB。