我米试图与XMPP服务器连接,但即时得到异常
使用机制DIGEST-MD5登录异常SASL身份验证失败
我使用此代码,可以在任何一个可以帮助我,或代码
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配置它是machinename.domain.com
这SASL机制也使用XMPP域名进行认证,不仅用户名和密码。 这就是为什么认证失败。
意味着你的用户名和密码必须是这样的:
用户名: 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不支持反斜杠(“\”)和双引号(逃逸““”)的SASL。根据XEP-0106,用户名‘user@company.com’应该是编码为“用户\ 040company.com”。与SASL规格完全符合,应编码为“用户\\ 040company.com”,但asmack没有。如果您的XMPP服务器(例如Openfire的)使用Java的SASL实现,它将有一个不匹配。啪3.x中使用Java的SASL实现,所以它工作正常。啪4.x版应该更换asmack,但如果啪4.x版使用Novell或Java SASL实现我不知道。
顺便说一句,在iOS的xmppframework存在这个问题为好。
如果你有兴趣在我的修正,我会在某个地方张贴。
这里是链接到修订DigestMD5SaslClient.java与逃逸引号的字符串。
文章来源: Login exception SASL authentication failed using mechanism DIGEST-MD5 asmack in android