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 に答える