我尝试了以下简单示例,以便在Facebook中发送消息:

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
    }


但是我得到了错误

com.restfb.exception.FacebookGraphException: Received Facebook error response of type GraphMethodException: Unsupported post request. Object with ID 'me' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api (code 100, subcode null)
    at com.facebook.impl.FacebookImplTest.testSomeMethod(FacebookImplTest.java:57)


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

最佳答案

我在两个小时前解决了此问题:)使用“ {conversation_id} / messages”而不是“ me / messages”。您可以使用以下代码获取session_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!!!"));

10-06 04:28