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 показывает, что сообщение было отправлено. Но на моем сайте в фейсбуке я не вижу того сообщения, отправленного этому человеку.
hellokVfox0
Это выходные данные столбца Smack Sugck Sent. Что-то не так с адресом from? или с этой структурой сообщения? Я застрял в этой точке, потому что я не знаю, как отладить эту проблему.
Любые советы, предложения или решения приветствуются.
Это фрагмент кода, который я использую,
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("praveen.ganapathi@chat.facebook.com", 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);
Спасибо и всего наилучшего, Картик
1 ответ
Я исправил эту проблему.
Адрес, которому было предназначено сообщение, также должен иметь формат JID. Чтобы получить это, нам нужно использовать Roaster Class of smack и получить все подключения или друзей в Facebook. Это помогло мне отправить сообщение предполагаемому JID.
Спасибо, Картик