Smack 连接到 Google 的 XMPP 服务 (gtalk) 会引发异常“SASLError using PLAIN: not-authorized”

Posted

技术标签:

【中文标题】Smack 连接到 Google 的 XMPP 服务 (gtalk) 会引发异常“SASLError using PLAIN: not-authorized”【英文标题】:Smack connecting to Google's XMPP service (gtalk) throws exception "SASLError using PLAIN: not-authorized" 【发布时间】:2014-08-28 08:07:37 【问题描述】:

我正在尝试使用 SMACK API 连接到 gmail,但出现以下错误,并且过去 2 天我被困住了。

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 jar 和 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("chatusernam@gmail.com", new MessageListener() 
         public void processMessage(Chat chat, Message message) 
             System.out.println("Received message: " + message);
         
     );

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

     con.disconnect();

希望我能在这里得到一些建议和帮助。

【问题讨论】:

【参考方案1】:

Google 最近已转为不允许在其帐户中使用 PLAIN 和类似方法 - https://support.google.com/accounts/answer/6010255。

如果您想使用此类身份验证机制,则需要帐户启用它们 - https://www.google.com/settings/security/lesssecureapps

【讨论】:

凯夫,谢谢你的帮助。启用身份验证机制后,我可以连接到 Gmail 并成功聊天。 不客气。如果这个问题解决了,您是否可以考虑接受这个答案,以便其他人可以找到它?

以上是关于Smack 连接到 Google 的 XMPP 服务 (gtalk) 会引发异常“SASLError using PLAIN: not-authorized”的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 BOSH 连接到 google talk xmpp 服务器?

无法通过 smack 连接到 XMPP 服务器:服务器没有响应

当使用 Smack 4.1.0 API 作为 Google 的 GCM CCS 的 XMPP 客户端时,SecurityMode.required 不起作用

Xmpp 连接因 smack 失败

使用 smack 连接到 Google Talk

Smack 连接到服务器失败