使用图形 API 进行 Facebook 聊天

Posted

技术标签:

【中文标题】使用图形 API 进行 Facebook 聊天【英文标题】:Facebook chat using graph API 【发布时间】:2015-01-06 13:33:44 【问题描述】:

我正在使用图形 API 来使用 Facebook 聊天。 我正在使用http://restfb.com/ 框架。 问题是使用以下代码我可以阅读所有对话和消息。

public void initClient()
    

        m_facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN, MY_APP_SECRET);
    
public void readPage()
    
        Page page = m_facebookClient.fetchObject("352179081632935", Page.class);
        System.out.println("Page likes = " + page.getLikes());


        Connection<Conversation> conversations = m_facebookClient.fetchConnection("me/conversations", Conversation.class);

    for(List<Conversation> conversationPage : conversations) 
        for(Conversation conversation : conversationPage) 
            System.out.println(conversation);
            System.out.println(conversation.getUnreadCount());

            Message lastMessage = null;
            for (Message message : conversation.getMessages())
            
                System.out.println("Message text = " + message.getMessage());
                System.out.println("Message unread = " + message.getUnread());
                System.out.println("Message from = " + message.getFrom().getName());
                System.out.println("Message to = " + message.getTo().get(0).getName());
                System.out.println("Message unseen = " + message.getUnseen());
                lastMessage = message;
            
            
    

我想知道如何使用此框架或 Graph API 发送回复消息或新消息?

谢谢你, 摩西

【问题讨论】:

【参考方案1】:

首先,用户没有me/conversations 端点。对话仅适用于页面,因此它将是 /page-id/conversations: https://developers.facebook.com/docs/graph-api/reference/v2.2/page/conversations

Facebook 文档详细解释了它的工作原理,包括一些示例代码。我建议改用其中一种官方 SDK(JS SDK、php SDK...)。

Chat API(这是您想要使用的)已弃用:https://developers.facebook.com/docs/chat/

意思是,您的应用程序中无法再使用 Facebook 聊天。

【讨论】:

me/conversations 确实存在,如果令牌是页面令牌则有效。【参考方案2】:

我找到了解决方法,方法是根据对话 ID 进行回复。

例如:

m_facebookClient.publish("t_mid.1420120490471:36257b35667389d257/messages", FacebookType.class, Parameter.with("message", "RestFB test")); 

t_mid.1420120490471:36257b35667389d257 - 是对话 ID

【讨论】:

是的,正如我所说,这在 facebook 文档中得到了很好的解释。当然,您会回复特定的对话 ID。如果您查看我发布的链接,这是其中的信息之一:“您无法使用此边缘发布,您可以使用 /conversation-id/messages 边缘通过 API 发送回复。 " 这个解决方案还能用吗? t_mid.1420120490471:36257b35667389d257 看起来不像对话 ID。你能给我一个链接吗?这些“解释清楚的 facebook 文档”在哪里?

以上是关于使用图形 API 进行 Facebook 聊天的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 聊天 API 和 OpenGraph

来自文件上传的Facebook图形api图片?

Facebook 聊天 API - 是不是可以与 2 个未知用户聊天?

Facebook:用于订阅用户到 Facebook(webhook)以进行实时更改的图形 api 是啥

使用 ruby​​ gem xmpp 进行 Facebook 聊天

如何使聊天网络应用程序使用 Skype 等 Facebook 聊天 API?