2012-06-21 63 views
0

我正在使用Actionscript3中的Facebook圖形API創建一個Facebook應用程序。對於一些奇怪的原因2天前Facebook.addJSEventListener決定不再調用回調函數。Facebook.addJSEventListener回調函數不被調用

這裏是我的代碼:

static public function ConnectToApp(sAppID_:String , sPermissions_:String, sRedirectURL_:String):void 
    { 
     sAppID = sAppID_; 
     sPermissions = sPermissions_; 
     sRedirectURL = sRedirectURL_; 
     Facebook.init(sAppID, loginHandler); 
    } 

    static private function loginHandler(objectSession_:Object,objectFail_:Object):void 
    { 
     if(objectSession_ == null) 
     { 
      ExternalInterface.call("redirect",sAppID, sPermissions,sRedirectURL); 
     } 

     Facebook.addJSEventListener('auth.statusChange', detectLogin); 
    } 

    static private function detectLogin(userInfo_:Object):void 
    { 
     if (userInfo_.status == "connected") 
     { 
      iUserStatus = Globals.FB_USER_CONNECTED; 
      iUserID = userInfo_.authResponse.userID; 
      Facebook.api('/me' ,getMeHandler); 
      Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml"); 
      sProfilePicURL = Facebook.getImageUrl(iUserID.toString()); 
      loadMyPicture(); 
     } 
     else if (userInfo_.status == "not_authorized") 
     { 
      iUserStatus = Globals.FB_USER_NOT_AUTHORIZED; 
     } 
     else 
     { 
      iUserStatus = Globals.FB_USER_NOT_CONNECTED; 
     } 
    } 

Facebook.init被調用loginHandler回調函數,但Facebook.addJSEventListener( 'auth.statusChange',detectLogin);決定不。

非常感謝您提供的所有幫助。

回答

0

我能夠得到它的工作。我做了以下代碼更改:

static public function ConnectToApp(sAppID_:String , sPermissions_:String, sRedirectURL_:String):void 
    { 
     sAppID = sAppID_; 
     sPermissions = sPermissions_; 
     sRedirectURL = sRedirectURL_; 
     Facebook.init(sAppID, loginHandler); 
    } 

    static private function loginHandler(objectSession_:Object,objectFail_:Object):void 
    { 
     if(objectSession_ == null) 
     { 
      ExternalInterface.call("redirect",sAppID, sPermissions,sRedirectURL); 
      return; 
     } 

     GetAllInfo(); 
    } 

    static private function GetAllInfo():void 
    { 
     iUserStatus = Globals.FB_USER_CONNECTED; 
     iUserID = int(Facebook.getAuthResponse().uid); 
     Facebook.api('/me' ,getMeHandler); 
     Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml"); 
     sProfilePicURL = Facebook.getImageUrl(iUserID.toString()); 
     loadMyPicture(); 
    } 

所以基本上我現在不加入一個事件偵聽器調用,當用戶連接一個回調函數,如果會議沒有準備好我重定向並返回......當會議準備就緒,我自動開始獲取信息。

我不確定我是否會遇到問題,在完全登錄前我開始詢問信息,但到目前爲止我做了很多測試,似乎可行。

如果有人有更好的解決方案,請讓我知道。