使用smack连接到Google Talk

我想开发一个连接到Google Talk的Java应用程序,允许用户与其朋友聊天。 我正在使用smack API和以下代码:

ConnectionConfiguration config = new ConnectionConfiguration("talk.google.com",5222,"gmail.com"); SASLAuthentication.supportSASLMechanism("PLAIN", 0); XMPPConnection connection = new XMPPConnection(config); try { connection.connect(); } catch (XMPPException e) { e.printStackTrace(); } try { connection.login("username", "password"); } catch (XMPPException e) { e.printStackTrace(); } 

但是我得到了一个例外:

 SASL authentication PLAIN failed: invalid-authzid: at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:337) at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203) at org.jivesoftware.smack.Connection.login(Connection.java:348) at Main.main(Main.java:21) 

有人可以帮我解决这个问题吗?

这应该可以解决问题,非常简单

 import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.ChatManager; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.MessageListener; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Presence; public class SenderTest { public static void main(String args[]) { //ConnectionConfiguration connConfig = new ConnectionConfiguration("localhost", 5222); //connConfig.setSASLAuthenticationEnabled(false); //ConnectionConfiguration connConfig = new ConnectionConfiguration("localhost", 5222); ConnectionConfiguration connConfig = new ConnectionConfiguration("talk.google.com", 5222, "gmail.com"); XMPPConnection connection = new XMPPConnection(connConfig); try { connection.connect(); System.out.println("Connected to " + connection.getHost()); } catch (XMPPException ex) { //ex.printStackTrace(); System.out.println("Failed to connect to " + connection.getHost()); System.exit(1); } try { connection.login("sender@example.com", "a"); System.out.println("Logged in as " + connection.getUser()); Presence presence = new Presence(Presence.Type.available); connection.sendPacket(presence); } catch (XMPPException ex) { //ex.printStackTrace(); System.out.println("Failed to log in as " + connection.getUser()); System.exit(1); } ChatManager chatmanager = connection.getChatManager(); Chat newChat = chatmanager.createChat("receiver@gmail.com", new MessageListener() { public void processMessage(Chat chat, Message message) { System.out.println("Received message: " + message); } }); try { newChat.sendMessage("Howdy!"); System.out.println("Message Sent..."); } catch (XMPPException e) { System.out.println("Error Delivering block"); } } } 

这是我用smack连接谷歌聊天的方法。

  private ConnectionStatus status; private XMPPConnection xmppConnection; public void connect(String server, int port, String s) throws Exception { xmppConnection = new XMPPConnection(new ConnectionConfiguration(server, port,s)); xmppConnection.connect(); xmppConnection.addConnectionListener(this); xmppConnection.getChatManager().addChatListener(this); } 

和身份validation。

 public void authenticate(String username, String password) throws Exception { xmppConnection.login(username, password); buddyList.setSession(xmppConnection); setStatus(ConnectionStatus.AUTHENITCATED); } 

这节省了我的一天

 connectionConfig = new ConnectionConfiguration(host, port, service); connectionConfig.setSASLAuthenticationEnabled(false); connectionConfig.setTruststoreType("BKS"); connection = new XMPPConnection(connectionConfig); 
Interesting Posts