2014-08-28 5 views
3

SMACK API를 사용하여 Gmail에 연결하려고하는데 아래 오류가 발생하며 지난 2 일 동안 계속 처리되었습니다.Smack에서 Google의 XMPP 서비스 (gtalk)에 연결하면 예외적으로 "PLAIN : not-authorized를 사용하는 SASLError"가 표시됩니다.

Exception in thread "main" org.jivesoftware.smack.sasl.SASLErrorException: SASLError using PLAIN: not-authorized 
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:348) 
at org.jivesoftware.smack.tcp.XMPPTCPConnection.login(XMPPTCPConnection.java:244) 
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:442) 

저는 smack 4.0.3 jars와 Java 7을 사용하고 있습니다. 내 사무실 네트워크에는 Gmail이 차단되어 있지 않습니다. 나는 포럼에서 주어진 모든 제안을 지쳤다.

1. setting SASLMechanism to PLAIN/DIGEST-MD5. 
2. adding the Thread.sleep delay after connect. 
3. by setting the dummy SSLSocketFactory. 
4. removing the domain name from user name. 

다음은 실행하려는 코드입니다.

public class JabberExample { 
public static void main(String[] args) throws Exception{ 

    XMPPTCPConnection con = new XMPPTCPConnection("gmail.com"); 
    SASLAuthentication.supportSASLMechanism("PLAIN",0); 

    con.connect(); 
    con.login("username", "password"); 

    Chat chat = ChatManager.getInstanceFor(con).createChat("[email protected]", new MessageListener() { 
     public void processMessage(Chat chat, Message message) { 
      System.out.println("Received message: " + message); 
     } 
    }); 

    chat.sendMessage("Message..!!"); 

    con.disconnect(); 
} 

}

나는 내가 몇 가지 제안을 얻고 여기에 도움이되기를 바랍니다.

답변

10

Google은 최근 PLAIN 및 유사한 방법을 계정에 허용하지 않기로 전환했습니다 (https://support.google.com/accounts/answer/6010255).

이 같은 인증 메커니즘을 사용하려면 계정을 활성화해야합니다 - https://www.google.com/settings/security/lesssecureapps

+0

케빈, 도움을 주셔서 감사합니다. 인증 메커니즘을 사용 설정하면 Gmail에 연결하고 채팅 할 수 있습니다. – Bhanu

+1

당신을 진심으로 환영합니다. 이 문제가 해결되면 다른 사람들이 찾을 수 있도록 답변을 수락 해 주시겠습니까? – Kev