0

FacebookチャットをモバイルFlash/AIRアプリケーションに統合しようとしていますが、XMPPにXIFFを使用しています。もちろん、sigとsecretの代わりにaccess_tokenを使用する新しいFacebookAPI用にいくつかのファイルを変更する必要がありました。

xiff / smack APIに精通している人のために、接続を確立する方法は次のとおりです。

XFacebookPlatform.setFacebookSessionValues(AppData.FACEBOOK_APP_ID, AppData.getInstance().getFBSession().accessToken);
XMPPConnection.registerSASLMechanism("X-FACEBOOK-PLATFORM", XFacebookPlatform);

var con :XMPPConnection = new XMPPConnection();
con.server = "chat.facebook.com";
con.useAnonymousLogin = true;
con.connect(XMPPConnection.STREAM_TYPE_STANDARD);

基本的に、私はIMOが正しい形式であるべきであるという課題に答えるところまで来ています。

var responseMap:Dictionary = new Dictionary();
responseMap.api_key = fb_api_key;
        responseMap.call_id = 0;
        responseMap.method = incomingChallengeMap.method;
        responseMap.nonce = incomingChallengeMap.nonce;
        responseMap.access_token = user_access_token;
        responseMap.v = "1.0";

        var challengeResponse:String = "api_key=" + responseMap.api_key;
        challengeResponse += "&call_id=" + responseMap.call_id;
        challengeResponse += "&method=" + responseMap.method;
        challengeResponse += "&nonce=" + responseMap.nonce;
        challengeResponse += "&access_token=" + responseMap.access_token;
        challengeResponse += "&v=" + responseMap.v;
        challengeResponse = Base64.encode( challengeResponse );

応答が送信されますが、応答として次の情報を受け取ります。

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>

これは、「xmpp_login」を付与しなかったようですが、付与しました。グラフAPIエクスプローラーを介して確認したところ、同じaccess_tokenに対して次のように表示されます。

{
 "data": [
   {
     "installed": 1,
     "xmpp_login": 1,
     "user_online_presence": 1,
     "friends_online_presence": 1
   }
 ]
}

これで十分だと思います。

しかし、それでも「許可されていない」エラーが発生します。ここで何がうまくいかなかったのか、何か考えはありますか?

4

1 に答える 1

1

おかしなことに、問題は次の行でした。

var con :XMPPConnection = new XMPPConnection();

これは次の行に置き換える必要があります:

var con :XMPPTLSConnection = new XMPPTLSConnection();

それでおしまい。Facebookチャットは、TLS接続でのみ認証されます。

それは理にかなっていますが、のエラーメッセージは

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>

権利を持つ何かが間違っていることを意味するので、ここでは非常に誤解を招きます。

于 2012-06-07T17:30:57.977 に答える