5

XMPPサーバーを介してSMACKAPIを使用してGmailに接続しようとしています。しかし、

エラー:メカニズムPLAINを使用したSASL認証に失敗しました

コードを垣間見ることができます。ネットからしか手に入らない

ConnectionConfiguration connConfig = new ConnectionConfiguration("talk.google.com", 5222, "gmail.com");
connection = new XMPPConnection(connConfig);
connection.connect();
SASLAuthentication.supportSASLMechanism("PLAIN", 0);

smackデバッグウィンドウでチェックインしました。XMLで言う:

<invalid-authzid />

私はすでにGmailのアカウントを持っていて、私のgtalkも実行されています。

4

3 に答える 3

9

vizに接続する前に認証を設定する必要があります

SASLAuthentication.supportSASLMechanism("PLAIN", 0);

の前に表示する必要がありますconnection.connect()

私のブログを参照してください。

于 2010-09-20T00:47:13.960 に答える
1
    ConnectionConfiguration cc = new ConnectionConfiguration(
            "vietnam.agilemobile.com", 5222, vietnam.agilemobile.com");
    XMPPConnection connection = new XMPPConnection(cc);
    try {
        SASLAuthentication.supportSASLMechanism("PLAIN", 0);
        connection.connect();
        Log.e("LOGIN", "" + 111);
        // You have to put this code before you login
        Log.e("LOGIN", "" + 222);
        // You have to specify your gmail addres WITH @gmail.com at the end
        connection.login("nemodo", "123456", "resource");
        Log.e("LOGIN", "" + 333);
        // See if you are authenticated
        System.out.println(connection.isAuthenticated());

    } catch (XMPPException e1) {
        e1.printStackTrace();
    }

私もこの間違いを犯しますが、私は働くことができません。

于 2012-07-19T04:17:16.103 に答える
0

authzidこれが最初に尋ねられて答えられてから何年もの間可能な解決策を探している人のために、私は最近、に値を明示的に設定することによってこの認証エラーを乗り越えることができましたXMPPTCPConnectionConfiguration

一部のクライアントXMPPサーバーでは接続構成が正常に機能し、他のサーバーではすべてSASL PLAIN認証を使用しているにもかかわらず、機能しないという問題が発生しました。トラブルシューティングを行った後、失敗したものが値を期待していることを知りましたauthzid。これを設定するようにコードを調整した後、以前は機能していた環境と、失敗していた環境の両方で機能します。

接続構成を構築する方法は次のとおりです。

XMPPTCPConnectionConfiguration.builder()
                              .setHost(XMPP_DOMAIN)
                              .setXmppDomain(XMPP_DOMAIN)
                              .setPort(XMPP_PORT)
                              .setCompressionEnabled(true) // optional, not all servers will support this
                              .setUsernameAndPassword(XMPP_USER, XMPP_PASSWORD)
                              .setResource(XMPP_RESOURCE)
                              .setAuthzid(JidCreate.entityBareFrom(String.format("%s@%s", XMPP_USER, XMPP_DOMAIN))) // <-- this was the change I needed
                              .build();

具体的には、次の行を追加する必要がありました。

.setAuthzid(JidCreate.entityBareFrom(String.format("%s@%s", XMPP_USER, XMPP_DOMAIN)))

于 2019-12-21T02:32:37.493 に答える