Facebook.init,Facebook.login触发弹出窗口拦截器

时间:2012-05-19 07:08:58

标签: actionscript-3 flash facebook-graph-api popup

在Flash中,我在构建之后首先调用身份验证,如何避免弹出窗口阻止程序。

public function FacebookProxy(appID:String, permissions:Object) {
        this.appID = appID;
        this.permissions = permissions;
    }

    public function authenticate():void { 
        var response:FacebookAuthResponse = Facebook.getAuthResponse();
        if(response && response.uid) {
            this.success(response);
        } else {
            this.init();
        }
    }

    protected function init():void { 
        Security.loadPolicyFile("https://fbcdn-profile-a.akamaihd.net/crossdomain.xml");
        Facebook.init(this.appID, this.initHandler);
    }

    protected function initHandler(response:FacebookAuthResponse, fail:Object):void {
        if(response && response.uid){ 
            this.success(response);
        } else { 
            setTimeout(this.login, 200);
        }
    }

    protected function login():void {
        Facebook.login(loginHandler, this.permissions);
    }

    protected function loginHandler(response:FacebookAuthResponse, fail:Object):void {
        if(response && response.uid) {
            this.success(response);
        } else {
            //ExternalInterface.call("trace", "code:" + fail.error.code + ", message:" + fail.error.message + ", type:" + fail.error.type);
        }
    }

    protected function success(response:FacebookAuthResponse):void {
    }

2 个答案:

答案 0 :(得分:0)

我不知道flash,但你不能自动调用Facebook.init, Facebook.login,它会被弹出窗口拦截器捕获。

仅在用户活动上触发这两种方法,即点击用户。

答案 1 :(得分:0)

从我记忆中,登录Facebook的最无摩擦的方式(通过游戏应用程序,没有流行和一个权限屏幕)是使用js api登录并将细节传递给flash