当前位置: 首页 > 知识库问答 >
问题:

ASMAC-android-8-4.0.6: SASLError使用DIGEST-MD5:未授权

冷越泽
2023-03-14

我得到以下错误,而登录成功连接后:

01-15 20:44:07.448  30164-30196/com.stm.myjob E/XMPPService﹕ Failed to log in as
8b6c219c36578e893c5e6d1d7b5af8a
01-15 20:44:07.448  30164-30196/com.stm.myjob E/XMPPService﹕
org.jivesoftware.smack.sasl.SASLErrorException: SASLError using DIGEST-MD5: not-authorized
01-15 20:47:07.891  30164-30223/com.stm.myjob W/PacketWriter﹕ Exception writing closing stream
element
java.net.SocketException: sendto failed: EPIPE (Broken pipe)
        at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:546)
        at libcore.io.IoBridge.sendto(IoBridge.java:515)
        at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
        at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
        at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266 )
        at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167)
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158)
        at java.io.BufferedWriter.flush(BufferedWriter.java:124)
        at org.jivesoftware.smack.tcp.PacketWriter.writePackets(PacketWriter.java:190)
        at org.jivesoftware.smack.tcp.PacketWriter.access$000(PacketWriter.java:40)
        at org.jivesoftware.smack.tcp.PacketWriter$1.run(PacketWriter.java:77)
 Caused by: android.system.ErrnoException: sendto failed: EPIPE (Broken pipe)
        at libcore.io.Posix.sendtoBytes(Native Method)
        at libcore.io.Posix.sendto(Posix.java:176)
        at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:278)
        at libcore.io.IoBridge.sendto(IoBridge.java:513)
        at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
        at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
        at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266 )
        at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167)
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158)
        at java.io.BufferedWriter.flush(BufferedWriter.java:124)
        at org.jivesoftware.smack.tcp.PacketWriter.writePackets(PacketWriter.java:190)
        at org.jivesoftware.smack.tcp.PacketWriter.access$000(PacketWriter.java:40)
        at org.jivesoftware.smack.tcp.PacketWriter$1.run(PacketWriter.java:77)

我在OpenFire服务器上打开用户,用户名8b6c219c36578e893c5e6d1d7b5af8a@myjob.uz。如果我使用asmack-2010.05.07所有工作正常,但当使用asmack-android-8-4.0.6我得到以下错误。\任何人知道如何修复它?

以下是连接方法:

private void connect(final String login, final String password) {
    Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
            // Create a connection
            ConnectionConfiguration connConfig = new ConnectionConfiguration(
                    AppConfig.XMPP_HOST, AppConfig.XMPP_PORT, AppConfig.XMPP_SERVICE);
            connConfig.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);

            XMPPConnection connection = new XMPPTCPConnection(connConfig);

            try {
                HLog.i(TAG, "XMPP connecting ...");
                connection.connect();
                HLog.i(TAG,
                        "Connected to " + connection.getHost());
            } catch (XMPPException ex) {
                HLog.e(TAG, "Failed to connect to "
                        + connection.getHost());
                HLog.e(TAG, ex.toString());
                setConnection(null);
            } catch (SmackException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                // SASLAuthentication.supportSASLMechanism("PLAIN", 0);
                connection.login(AppConfig.TEST_USERNAME, AppConfig.TEST_PASSWORD);
                HLog.i(TAG,
                        "HLogged in as " + connection.getUser());

                // Set the status to available
                Presence presence = new Presence(Presence.Type.available);
                connection.sendPacket(presence);
                setConnection(connection);
            } catch (XMPPException ex) {
                HLog.e(TAG, "Failed to log in as "
                        + login);
                HLog.e(TAG, ex.toString());
                setConnection(null);
            } catch (SmackException sexp) {
                sexp.printStackTrace();
            } catch (IOException ioexp) {
                ioexp.printStackTrace();
            }
        }
    });
    t.start();
}

共有1个答案

庄康胜
2023-03-14

也许您应该在添加XMPPTCPConnection配置之前添加以下代码:

   SASLAuthentication.registerSASLMechanism("PLAIN", SASLPlainMechanism.class);
   SASLAuthentication.supportSASLMechanism("PLAIN",0);
 类似资料:
  • 我正在尝试创建一个基本连接,并登录到我安装的Openfire服务器。我通过Openfire web管理界面创建的用户数据库中有以下用户: 我可以很好地连接到服务器,因为连接在我的sout中返回true。问题是,当它尝试登录时,会出现以下错误: 我有以下代码: 如果有人能纠正我做错的事情,我会非常感激。 我也尝试了用户名作为电子邮件将是例如

  • 问题内容: 我已经尝试了所有将Facebook与XMPP连接的方法,但是一直都只遇到一个错误: 使用机制DIGEST-MD5进行的SASL身份验证失败 我正在实现以下方法来执行此任务: 和连接功能是: 我搜索了所有博客并发现了相同的内容,但是我不知道我在这里做错了什么.. 如果还有其他方法或解决方案来连接Facebook XMPP,请尽快帮助我 问题答案: 最后,由于使用了no.good.at.c

  • 我已经创建了自己的android。这样我就可以使用隐藏的API调用“DisplayManager.connectWifiDisplay()”。 当我运行应用程序并调用该方法时,在通过Wifi Direct连接到显示器后, 我得到以下例外: java.lang.SecurityException:连接到wifi显示器所需的权限:用户10105和当前进程都没有android.Permission.CO

  • 我使用SASL DIGEST-MD5身份验证机制通过LDAP连接到Active Directory(Windows Server 2008 R2)时遇到问题。我收到下一个错误: 身份验证失败-[LDAP:错误代码49-8009030C:LDAPPER:DSID-0C09004DC,注释:AcceptSecurityContext错误,数据52e,v1db1] 不同的客户端报告相同的错误。使用相同凭

  • 例如,将username设置为简单字符串username,也可以使用username@jabber.org(或@jabber.de) 我的上的、、。 还要配置SASL机制: null 所有这些尝试,我也都评说得一干二净。 我搜索了很多,发现这是旧的Smack库上的一个bug,但应该在新的Smack版本4.0以上的版本中修复。所以我不得不假设这个错误不是Smack中的bug。 我认为这个错误可能是因