使用restFB发送消息

时间:2016-09-19 15:50:11

标签: java restfb

我试过这个简单的例子,以便在Facebook上发送消息:

$ conda install pyqt=4.11.4
$ conda install qt=4.8.7

但我收到错误

public void testSomeMethod()
    {
        String token = "XXXXXX";
        FacebookClient facebookClient = new DefaultFacebookClient(token, Version.LATEST);


        IdMessageRecipient recipient = new IdMessageRecipient("123456");
        Message message = new Message("Just a simple text");

        SendResponse resp = facebookClient.publish("me/messages", SendResponse.class,
            Parameter.with("recipient", recipient), // the id or phone recipient
            Parameter.with("message", message)); // one of the messages from above
    }

你能提出一些解决方案吗?

1 个答案:

答案 0 :(得分:1)

我在两小时前解决了这个问题:)使用“ {conversation_id} / messages ”代替“ me / messages ”。您可以使用以下代码获取 conversation_id

Connection<Conversation> conversations = pageClient.fetchConnection("me/conversations", Conversation.class);
    for (List<Conversation> conversationPage : conversations) {
        for (Conversation conversation : conversationPage) {
            String id = conversation.getId();   //use this conversation_id
            Connection<Message> messages = pageClient.fetchConnection(id + "/messages", Message.class, Parameter.with("fields", "message,created_time,from,id"));
            messages.forEach(s -> s.forEach(k -> System.out.println(k.getFrom() + " " + k.getId() + " " + k.getMessage() + " " + k.getSubject() + " ")));
        }
    }

以下代码适合我:

FacebookClient pageClient = new DefaultFacebookClient(pageAccessToken, Version.VERSION_2_6);
    IdMessageRecipient recipient = new IdMessageRecipient("{user_id}");      
    String conversationId = “t_mid.14XXX.. : XXX...” ;         
    SendResponse resp = pageClient.publish(conversationId +"/messages", SendResponse.class,                
            Parameter.with("recipient", recipient),             
            Parameter.with("message", "Uraaaa!!!"));