0

FB用のシンプルなチャットクライアントを開発しています。「xmpp_login」および「offline_access」スコープでチャットにログインしたユーザーのaccess_tokenを使用できる状態になりました。chat.facebook.comに正常に接続し、api_keyとaccess_tokenを使用してログインすることもできます。SASL認証に問題はありません。

これで、chat.sendMessage(String)またはchat.sendMessage(Message)を使用してメッセージを送信しようとすると、smackデバッガーにメッセージが送信されたことが表示されます。しかし、私のFacebook Webサイトでは、その人に送信されたメッセージは表示されません。

hellokVfox0

これは、Smackデバッガーの送信済み列からの出力です。差出人アドレスに何か問題がありますか?またはこのメッセージ構造で?この問題をデバッグする方法がわからないため、この時点で立ち往生しています。

アドバイス、提案、解決策は大歓迎です。

これは私が使用しているコードスニペットです、

        ConnectionConfiguration config = new                 ConnectionConfiguration("chat.facebook.com",5222);//ProxyInfo.forHttpProxy(soc.getHostName(),8080, null, null));
    config.setSASLAuthenticationEnabled(true);
    XMPPConnection connection = new XMPPConnection(config);
    XMPPConnection.DEBUG_ENABLED = true;
    SASLAuthentication.registerSASLMechanism("X-FACEBOOK-PLATFORM", SASLXFBAuthentication.class);
    SASLAuthentication.supportSASLMechanism("X-FACEBOOK-PLATFORM", 0);
    connection.connect();
    String apiKey ="282973731790200";
    String accessToken ="My access token with xmpp_login and offline_access scope";
        connection.login(apiKey, accessToken);
    Chat newchat = connection.getChatManager().createChat("praveen.ganapathi@chat.facebook.com", new MessageListener() {


        public void processMessage(Chat chat, Message message) {
            // Print out any messages we get back to standard out.
            System.out.println("Received message: " + message);
        }
    });
    Message msg = new Message();
    msg.addBody("English", text);
    msg.addSubject("English", "Test");
    msg.setType(Type.chat);
   // connection.sendPacket(msg);
    newchat.sendMessage(msg);   

よろしくお願いします、Karthik

4

1 に答える 1

2

この問題を修正しました。

メッセージの宛先アドレスも JID 形式である必要があります。これを取得するには、smack の Roaster クラスを使用して、Facebook ですべての接続または友人を取得する必要があります。そうすることで、目的の JID にメッセージを送信することができました。

ありがとう、カーシック

于 2012-05-03T03:51:01.400 に答える