Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash Facebook AS3 API-getSession()始终返回NULL,login()不创建弹出窗口?_Flash_Actionscript 3_Facebook_Facebook Graph Api - Fatal编程技术网

Flash Facebook AS3 API-getSession()始终返回NULL,login()不创建弹出窗口?

Flash Facebook AS3 API-getSession()始终返回NULL,login()不创建弹出窗口?,flash,actionscript-3,facebook,facebook-graph-api,Flash,Actionscript 3,Facebook,Facebook Graph Api,编辑:修复了大部分问题(但不太确定原因)。检查邮件底部是否有我的便条 我正在从头开始做我的第一个AS3 Facebook项目,所以为任何愚蠢的错误道歉 无论如何,我创建了一个简单的类,init()是Facebook类对象,如果当前没有getSession()的话,它会提示您登录。现在的问题是,我只能从getSession()中获取NULL,而调用Facebook.login()根本不起任何作用 您将在代码中看到,Facebook.login()是基于是否可以getSession()的有条件的,但

编辑:修复了大部分问题(但不太确定原因)。检查邮件底部是否有我的便条

我正在从头开始做我的第一个AS3 Facebook项目,所以为任何愚蠢的错误道歉

无论如何,我创建了一个简单的类,init()是Facebook类对象,如果当前没有getSession()的话,它会提示您登录。现在的问题是,我只能从getSession()中获取NULL,而调用Facebook.login()根本不起任何作用

您将在代码中看到,Facebook.login()是基于是否可以getSession()的有条件的,但我也在没有该检查的情况下尝试了此操作,甚至没有触发回调

有什么想法吗

我遵循了一个教程,以防我的代码中有明显的错误(这是他的错)

代码如下:

    public function init():void {           
        Facebook.init(_appID, checkLoginStatus, null, _accessToken, true);
    }

    // facebook methods -----------------------------------------------------  /

    private function checkLoginStatus(response:Object, error:Object):void {

        if (Facebook.getSession() && Facebook.getSession().accessToken){ configLoginData(); }
        else if(!error) { promptLogin(); }
    }

    private function promptLogin():void {
        $requireLogin.dispatch();
    }

    // login / logout -------------------------------------------------------  /

    public function login(e:* = null):void {

        Debug.log("Facebook PROMPT LOGIN " + Facebook.getSession(), Debug.GREEN);

        if(Facebook.getSession() && !Facebook.getSession().accessToken){
            Facebook.login(checkLoginStatus, {perms:"publish_stream"});
        } else {
            Facebook.logout(logoutComplete);
        }
    }

我也有它运行了我的服务器,这是正确连接到一个应用程序(根据需要)。你可以在这里看到:

好的,所以我通过翻阅Facebook API代码找到了答案

如果在调用Facebook.init()时输入oauth=true,它将自动使所有会话调用为NULL


我对API的了解还不够,还不知道为什么会这样,但至少我已经取得了一些进展:)

要让所有人都工作,你必须处理好javascript部分

在html页面的标题部分,包括这些javascript文件

<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js”></script>

<script type=”text/javascript” src=”http://connect.facebook.net/en_US/all.js”></script>

接下来,您需要在同一页面的主体中包含id=“fb root”的div。 然后弹出窗口将显示供用户登录

如果要启动init handler函数, 您必须使用此代码嵌入flash电影

    <script type=”text/javascript”>
swfobject.embedSWF(“yourfile.swf”, “flashContent”, “1000″, “700″, “9.0″, null, null, null, {name: “flashContent”});

</script>

embedSWF(“yourfile.swf”、“flashContent”、“1000〃”、“700〃”、“9.0〃,null、null、null,{name:“flashContent”});
为了跨浏览器,您的flash对象id必须与其名称匹配

然后确保在as3的主时间线中完成所有的Facebook.init()和login() 或者您的文档类。 在根以外的其他地方做这些会让你做噩梦。 希望这有帮助