Чат FB с использованием SASL X-FACEBOOK_PLATFORM не работает

Я разрабатываю простой чат-клиент для FB. Я дошел до состояния, когда теперь у меня есть access_token пользователя, который вошел в мой чат с областью действия «xmpp_login» и «offline_access». Я могу успешно подключиться к chat.facebook.com, а также войти в систему, используя api_key и access_token. Проблем с SASL-аутентификацией нет.

Теперь, когда я пытаюсь отправить сообщение, используя chat.sendMessage(String) или chat.sendMessage(Message), отладчик smack показывает, что сообщение было отправлено. Но на моем сайте в Facebook я не вижу этого сообщения, отправленного этому человеку.

хеллоквфокс0

Это вывод из столбца "Отправленные" отладчика Smack. Что-то не так с адресом отправителя? или с такой структурой сообщения? Я застрял на этом этапе, потому что не знаю, как решить эту проблему.

Любые советы, предложения или решения приветствуются.

Это фрагмент кода, который я использую,

        ConnectionConfiguration config = new                 ConnectionConfiguration("chat.facebook.com",5222);//ProxyInfo.forHttpProxy(soc.getHostName(),8080, null, null));
    config.setSASLAuthenticationEnabled(true);
    XMPPConnection connection = new XMPPConnection(config);
    XMPPConnection.DEBUG_ENABLED = true;
    SASLAuthentication.registerSASLMechanism("X-FACEBOOK-PLATFORM", SASLXFBAuthentication.class);
    SASLAuthentication.supportSASLMechanism("X-FACEBOOK-PLATFORM", 0);
    connection.connect();
    String apiKey ="282973731790200";
    String accessToken ="My access token with xmpp_login and offline_access scope";
        connection.login(apiKey, accessToken);
    Chat newchat = connection.getChatManager().createChat("[email protected]", new MessageListener() {


        public void processMessage(Chat chat, Message message) {
            // Print out any messages we get back to standard out.
            System.out.println("Received message: " + message);
        }
    });
    Message msg = new Message();
    msg.addBody("English", text);
    msg.addSubject("English", "Test");
    msg.setType(Type.chat);
   // connection.sendPacket(msg);
    newchat.sendMessage(msg);   

Спасибо и С уважением, Картик


person Karthik    schedule 01.05.2012    source источник
comment
Сообщение в отладчике smack было следующим: ‹message id=7t1b1-4 [email protected] [email protected]/Smack_a12852bb_4BEE613208288 type=chat›‹body›hello‹/body›‹ нить›kVfox0‹/тема›‹/сообщение›   -  person Karthik    schedule 01.05.2012
comment
Когда вы говорите, что не видите сообщения, ДРУГОЙ человек видит это сообщение?   -  person Igy    schedule 01.05.2012
comment
Нет... другой человек тоже не видит сообщения, и это тоже не исключение. Должен ли я кодировать сообщение или это может быть простая строка, такая как chat.sendMessage(hello). Должен ли я опубликовать свой код здесь?   -  person Karthik    schedule 01.05.2012
comment
Может ли кто-нибудь посоветовать мне, что нужно сделать или я что-то упускаю?   -  person Karthik    schedule 01.05.2012


Ответы (1)


Я исправил эту проблему.

Адрес, которому предназначалось сообщение, также должен быть в формате JID. Чтобы получить это, нам нужно использовать Roaster Class smack и получить все связи или друзей в Facebook. Это помогло мне отправить сообщение предполагаемому JID.

Спасибо, Картик

person Karthik    schedule 03.05.2012