Исключение входа Исключение ошибки SASL с использованием механизма DIGEST-MD5 asmack in android

Я пытаюсь подключиться к XMPP-серверу, но я получаю исключение

Исключение входа Исключение аутентификации SASL с использованием механизма DIGEST-MD5

Я использую этот код, может ли кто-нибудь мне помочь, или код

try { if (xmppConnection == null) { ConnectionConfiguration config = new ConnectionConfiguration( SERVER_HOST, SERVER_PORT, SERVICE_NAME); xmppConnection = new XMPPConnection(config); System.out.println("xmppConnection"+xmppConnection); } if (!xmppConnection.isConnected()) { xmppConnection.connect(); System.out.println("Connecting"); } System.out.println("facebook id get xmpp "+username); if (!xmppConnection.isAuthenticated()) { xmppConnection.login(username, "123"); System.out.println("User is authenticated "); } Presence presence = new Presence(Presence.Type.available); xmppConnection.sendPacket(presence); } catch (Exception e) { System.out.println("Login exception "+e); e.printStackTrace(); } 

    В конфигурации Openfire это машинное имя.domain.com

    Этот механизм SASL использует также имя домена Xmpp для аутентификации, а не только имя пользователя и пароль. Вот почему аутентификация терпит неудачу.

    Означает, что ваше имя пользователя и пароль должны быть такими:

    abc111@domain.com (whatever your domain name) пользователя: abc111@domain.com (whatever your domain name)

    Пароль: abcabc111

    Для более подробной проверки этого разговора .

    Я использую ниже код в своем рабочем состоянии.

     try { ConnectionConfiguration connConfig = new ConnectionConfiguration("HOST_IP", Integer.parseInt("PORT_NO")); XMPPConnection connection = new XMPPConnection(connConfig); connection.connect(); try { // Login connection.login("USER_NAME", "PASSWORD"); // Set the status to available Presence presence = new Presence(Presence.Type.available); connection.sendPacket(presence); xmppClient.setConnection(connection); } catch (XMPPException ex) { Log.w("XMPPClient", "[SettingsDialog] Failed to log in as " + username); Log.w("XMPPClient", ex.toString()); xmppClient.setConnection(null); } } catch (XMPPException ex) { Log.w("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost()); Log.w("XMPPClient", ex.toString()); xmppClient.setConnection(null); } 

    И я добавил файл smack.jar .

    Пожалуйста, проверьте ниже сообщение, я думаю, это может помочь вам ..

    https://stackoverflow.com/a/6659403/1849482

    И многие пользователи получают эту ошибку при входе в систему. Проверьте ниже ссылки для получения дополнительной информации ..

    http://community.igniterealtime.org/thread/44219

    http://code.google.com/p/asmack/issues/detail?id=33

    Asmack использует Novell Open LDAP DigestMD5SaslClient.java, который не поддерживает escape-косую черту ('\') и двойную кавычку ('' ') для SASL. Согласно XEP-0106, имя пользователя «user@company.com» должно быть Закодированный как «пользователь \ 040company.com». Полностью соблюдая спецификацию SASL, он должен быть закодирован как «user \\ 040company.com», но asmack этого не сделал. Если ваш сервер XMPP (например, Openfire) использует реализацию SASL Java, это Будет иметь несоответствие. Smack 3.x использует реализацию SASL Java, поэтому он работает нормально. Smack 4.x должен заменить asmack, но я не знаю, использует ли Smack 4.x реализацию Novell или Java SASL.

    Кстати, эта проблема существует и в iOS xmppframework.

    Если вас интересует мое исправление, я отправлю его где-нибудь.

    Вот ссылка на пересмотренный файл DigestMD5SaslClient.java с кавычкой escape-кавычки.