0

我正在 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); 决定不。

预先感谢您的所有帮助。

4

1 回答 1

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();
    }

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

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

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

于 2012-06-25T23:37:16.200 回答