"bad_auth is not a constant in org.jivesoftware.smack.sasl.SASLError" 使用 Smack 4.1 的异常
"bad_auth is not a constant in org.jivesoftware.smack.sasl.SASLError" exception using Smack 4.1
相关问题:
我在 Android 应用程序中使用 Smack 4.1.1,但出现以下异常 -
05-19 21:38:31.141 8330-8803/test W/SASLError﹕ Could not transform string 'bad_auth' to SASLError
java.lang.IllegalArgumentException: bad_auth is not a constant in org.jivesoftware.smack.sasl.SASLError
at java.lang.Enum.valueOf(Enum.java:192)
at org.jivesoftware.smack.sasl.SASLError.valueOf(SASLError.java:22)
at org.jivesoftware.smack.sasl.SASLError.fromString(SASLError.java:46)
at org.jivesoftware.smack.sasl.packet.SaslStreamElements$SASLFailure.<init>(SaslStreamElements.java:169)
at org.jivesoftware.smack.util.PacketParserUtils.parseSASLFailure(PacketParserUtils.java:789)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1032)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access0(XMPPTCPConnection.java:937)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.run(XMPPTCPConnection.java:952)
at java.lang.Thread.run(Thread.java:856)
05-19 21:38:31.221 8330-8766/test W/System.err﹕ org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: bad-auth
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:365)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1033)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access0(XMPPTCPConnection.java:937)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.run(XMPPTCPConnection.java:952)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
这是我当前的登录码 -
public void login(String username, String password) throws IOException, XMPPException, SmackException {
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(username, password)
.setHost(SERVICE_NAME)
.setPort(5222)
.setServiceName(SERVICE_NAME)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.build();
mConnection = new XMPPTCPConnection(config);
mConnection.connect();
mConnection.login();
mChatManager = ChatManager.getInstanceFor(mConnection);
mChatManager.addChatListener(this);
}
我尝试过使用 Plain SASL 机制 -
SASLAuthentication.registerSASLMechanism(新SASLPlainMechanism());
也试过下面的代码
SASLMechanism mechanism = new SASLDigestMD5Mechanism();
SASLAuthentication.registerSASLMechanism(mechanism);
SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1");
SASLAuthentication.unBlacklistSASLMechanism("DIGEST-MD5");
全部都不行。
我能够成功地将同一台服务器用于 iOS(使用 XMPPFramework)和 WPF(使用 S22)。我也在 pidgin 中使用它来测试。它在任何地方都可以正常工作,所以我确信我错过了一些在 smack 中进行身份验证的重要步骤。怎样才能知道登录指定服务器的正确方式是什么?
05-19 21:38:31.141 8330-8803/test W/SASLError﹕ Could not transform string 'bad_auth' to SASLError
java.lang.IllegalArgumentException: bad_auth is not a constant in org.jivesoftware.smack.sasl.SASLError
at java.lang.Enum.valueOf(Enum.java:192)
"bad_auth" 不是根据 RFC 6120 § 6.5. SASL Errors 定义的 SASL 错误。告诉所用 XMPP 服务器的供应商修复该问题。
相关问题:
我在 Android 应用程序中使用 Smack 4.1.1,但出现以下异常 -
05-19 21:38:31.141 8330-8803/test W/SASLError﹕ Could not transform string 'bad_auth' to SASLError
java.lang.IllegalArgumentException: bad_auth is not a constant in org.jivesoftware.smack.sasl.SASLError
at java.lang.Enum.valueOf(Enum.java:192)
at org.jivesoftware.smack.sasl.SASLError.valueOf(SASLError.java:22)
at org.jivesoftware.smack.sasl.SASLError.fromString(SASLError.java:46)
at org.jivesoftware.smack.sasl.packet.SaslStreamElements$SASLFailure.<init>(SaslStreamElements.java:169)
at org.jivesoftware.smack.util.PacketParserUtils.parseSASLFailure(PacketParserUtils.java:789)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1032)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access0(XMPPTCPConnection.java:937)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.run(XMPPTCPConnection.java:952)
at java.lang.Thread.run(Thread.java:856)
05-19 21:38:31.221 8330-8766/test W/System.err﹕ org.jivesoftware.smack.sasl.SASLErrorException: SASLError using SCRAM-SHA-1: bad-auth
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(SASLAuthentication.java:365)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1033)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access0(XMPPTCPConnection.java:937)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.run(XMPPTCPConnection.java:952)
05-19 21:38:31.231 8330-8766/test W/System.err﹕ at java.lang.Thread.run(Thread.java:856)
这是我当前的登录码 -
public void login(String username, String password) throws IOException, XMPPException, SmackException {
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(username, password)
.setHost(SERVICE_NAME)
.setPort(5222)
.setServiceName(SERVICE_NAME)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.build();
mConnection = new XMPPTCPConnection(config);
mConnection.connect();
mConnection.login();
mChatManager = ChatManager.getInstanceFor(mConnection);
mChatManager.addChatListener(this);
}
我尝试过使用 Plain SASL 机制 -
SASLAuthentication.registerSASLMechanism(新SASLPlainMechanism());
也试过下面的代码
SASLMechanism mechanism = new SASLDigestMD5Mechanism();
SASLAuthentication.registerSASLMechanism(mechanism);
SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1");
SASLAuthentication.unBlacklistSASLMechanism("DIGEST-MD5");
全部都不行。
我能够成功地将同一台服务器用于 iOS(使用 XMPPFramework)和 WPF(使用 S22)。我也在 pidgin 中使用它来测试。它在任何地方都可以正常工作,所以我确信我错过了一些在 smack 中进行身份验证的重要步骤。怎样才能知道登录指定服务器的正确方式是什么?
05-19 21:38:31.141 8330-8803/test W/SASLError﹕ Could not transform string 'bad_auth' to SASLError
java.lang.IllegalArgumentException: bad_auth is not a constant in org.jivesoftware.smack.sasl.SASLError
at java.lang.Enum.valueOf(Enum.java:192)
"bad_auth" 不是根据 RFC 6120 § 6.5. SASL Errors 定义的 SASL 错误。告诉所用 XMPP 服务器的供应商修复该问题。