2013-10-14 54 views
9

我試圖使用Smack登錄到XMPP服務器。當試圖登錄我收到以下錯誤:嘗試使用Smack登錄到XMPP服務器結果在SASL「未經授權」

SASL認證平原失敗:未授權

我已經能夠連接並登錄到使用PSI-IM具有相同的憑證服務器。

這是我目前有:

System.setProperty("smack.debugEnabled", "true"); 
    XMPPConnection.DEBUG_ENABLED = true; 

    SASLAuthentication.supportSASLMechanism("PLAIN", 0); 

    ConnectionConfiguration configuration = new ConnectionConfiguration("chat.bla.com", 5223); 
    configuration.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    configuration.setSocketFactory(new DummySSLSocketFactory()); 
    configuration.setSASLAuthenticationEnabled(true); 
    configuration.setDebuggerEnabled(true); 
    configuration.setServiceName("bla.net"); 

    Connection connection = new XMPPConnection(configuration); 

    try { 
     connection.connect(); 
     connection.login("[email protected]", "blablabla"); 
    } catch (XMPPException e) { 
     e.printStackTrace(); 
    } 

這是我使用的DummySSLSocketFactory:我想這個問題是我需要選擇「傳統SSL」當http://svn.igniterealtime.org/svn/repos/spark/tags/spark_2_5_3_s/src/java/org/jivesoftware/spark/util/DummySSLSocketFactory.java

通過PSI連接,我不知道如何在Java中做到這一點。

感謝所有幫助

+2

嘗試'登錄()'不帶域部分,即'connection.login(「user」,「blablabla」);' – Flow

+0

呃,修正了它。非常感謝 – Shishigami

+1

這可能是因爲用戶名或密碼錯誤。 – Krishna

回答

18

嘗試login()沒有用戶名中的域部分:

connection.login("user", "password"); 

connection.login("[email protected]", "password"); 
+0

你救了我的一天。 :d – taynguyen

相關問題