Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook聊天报告”;“未经授权”;,虽然";xmpp“U登录”;准予_Facebook_Actionscript 3_Flash_Xmpp_X Facebook Platform - Fatal编程技术网

Facebook聊天报告”;“未经授权”;,虽然";xmpp“U登录”;准予

Facebook聊天报告”;“未经授权”;,虽然";xmpp“U登录”;准予,facebook,actionscript-3,flash,xmpp,x-facebook-platform,Facebook,Actionscript 3,Flash,Xmpp,X Facebook Platform,我正在尝试将facebook聊天功能集成到我们的移动Flash/AIR应用程序中,并将其用于XMPP。当然,我不得不修改一些文件,以适应使用access_令牌而不是sig和secret的较新Facebook API 对于那些熟悉xiff/smack API的人,下面是我如何建立连接的: XFacebookPlatform.setFacebookSessionValues(AppData.FACEBOOK_APP_ID, AppData.getInstance().getFBSession().a

我正在尝试将facebook聊天功能集成到我们的移动Flash/AIR应用程序中,并将其用于XMPP。当然,我不得不修改一些文件,以适应使用access_令牌而不是sig和secret的较新Facebook API

对于那些熟悉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"/>
我想这应该足够了

但我仍然得到了“未授权”的失败。
你知道这里出了什么问题吗?

有趣的是,问题是这句话:

var con :XMPPConnection = new XMPPConnection();
var con :XMPPTLSConnection = new XMPPTLSConnection();
必须用以下行替换:

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"/>

在这里是非常具有误导性的,因为这意味着有权利的东西是错误的