没有调用Facebook.addJSEventListener回调函数

时间:2012-06-21 18:12:24

标签: facebook facebook-graph-api

我在Actionscript3中借助Facebook图形API创建了一个facebook应用程序。出于某种奇怪的原因,2天前 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); 决定不这样做。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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();
    }

所以基本上现在我没有添加一个事件监听器,当用户连接时调用回调函数,如果会话没有准备好我重定向并返回...当会话准备就绪时我会自动开始获取信息。

我不确定在完全登录之前我是否会遇到问题,但是到目前为止我做了很多测试并且它似乎有效。

如果有人有更好的解决方案,请告诉我。

相关问题