Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
如何将flash facebook应用程序与facebook服务器同步_Flash_Facebook Graph Api_Facebook Javascript Sdk_Facebook As3 Api - Fatal编程技术网

如何将flash facebook应用程序与facebook服务器同步

如何将flash facebook应用程序与facebook服务器同步,flash,facebook-graph-api,facebook-javascript-sdk,facebook-as3-api,Flash,Facebook Graph Api,Facebook Javascript Sdk,Facebook As3 Api,我正在使用as3 fb api,它连接到一个flash应用程序的js api。它工作正常:登录,获取好友档案图片,注销,重复 但是如果用户打开指向facebook.com的第二个浏览器选项卡,并使用它注销facebook,然后返回到我的应用程序,点击注销按钮调用facebook.logout(),问题就开始了 我的应用程序侦听: Facebook.addJSEventListener( 'auth.statusChange' , om__statusChange ) ;

我正在使用as3 fb api,它连接到一个flash应用程序的js api。它工作正常:登录,获取好友档案图片,注销,重复

但是如果用户打开指向facebook.com的第二个浏览器选项卡,并使用它注销facebook,然后返回到我的应用程序,点击注销按钮调用facebook.logout(),问题就开始了

我的应用程序侦听:

Facebook.addJSEventListener( 'auth.statusChange'       , om__statusChange       ) ;
Facebook.addJSEventListener( 'auth.authResponseChange' , om__authResponseChange ) ;
Facebook.addJSEventListener( 'auth.login'              , om__login_noticed      ) ;
Facebook.addJSEventListener( 'auth.logout'             , om__logout_noticed     ) ;
理想情况下,我希望Facebook.logout()会调用js,它将ajax发送给fb服务器,以发现用户已经退出,并返回消息供应用程序处理

在我的firebug调试器中,我看到调用了facebookjsbridge:logout函数,但其回调函数FBAS.handleUserLogout未被调用,也未调用任何EventListener


那么,将我的应用程序与服务器同步的适当方式是什么

在尝试了几天各种技术之后,我想到了这一点,但它是黑客的

问题是:如果用户通过as3 fb api:facebook.login(…)登录到我的facebook应用程序,然后转到另一个浏览器选项卡,在那里打开facebook.com,在那里注销,然后返回到我的应用程序并处理它,我的应用程序将与facebook不同步

因此,为了解决这个问题,我现在有任何和所有Facebook.api调用来查找此故障:

{ error , [object Object] , object
    { code , 190 , number
      message , Error validating access token: The session is invalid because the user logged out. , string
      type , OAuthException , string
      error_subcode , 467 , number          
     }
}
// I may discover later that there are other types of failures 
//    that I will need to catch as well.
如果有任何调用返回此错误,应用程序将重新加载自身(我使用对js的外部接口调用来处理重新加载)

此外,我还为我的注销按钮添加了一个例程来使用这个系统。最初,当用户按下注销按钮时,我会简单地调用Facebook.LOGOUT(…),但如果用户已经注销,则会失败。。。Facebook.logout(…)甚至不调用带有错误消息的回调,因此应用程序无法发现不同步问题

因此,现在当用户按下注销按钮时,应用程序首先调用Facebook.api(“/me/”,…)。为什么?因为该api调用将返回错误消息(或成功消息),即使用户已通过另一个浏览器选项卡注销。如果这个api调用返回一个失败消息/对象,那么我将把应用程序转移到重新加载阶段,否则我通常会继续使用Facebook.logout(…)