2012-08-01 10 views
6

Googleトークに接続し、ユーザーがその友人とチャットできるJavaアプリケーションを開発したいと考えています。 スマックでGoogleトークに接続

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(); 
} 

が、私は休閑例外を取得::私はピシャリとAPIと休閑コードを使用しています

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) 

誰かがこの問題を解決するために私を助けることができますか?

答えて

1

これは私がsmackを使用してGoogle Talkに接続するために使用した方法です。

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); 
} 

と認証。

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

感謝を保存し、私は「ログインに管理しますが、何らかの理由で、私は例外を取得し、私はドンそれを投稿する方法を知っている –

+0

ログインすることはできますが、例外が発生しますか?最初の行を投稿できますか? – Travis

5

これはトリックを行う必要があり、非常に簡単

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("[email protected]", "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("[email protected]", 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"); 
    } 
} 

} 
1

は、これが私の一日

connectionConfig = new ConnectionConfiguration(host, port, service); 
connectionConfig.setSASLAuthenticationEnabled(false); 
connectionConfig.setTruststoreType("BKS"); 
connection = new XMPPConnection(connectionConfig); 
関連する問題