Flash Facebook AS3 API-getSession()始终返回NULL,login()不创建弹出窗口?
编辑:修复了大部分问题(但不太确定原因)。检查邮件底部是否有我的便条 我正在从头开始做我的第一个AS3 Facebook项目,所以为任何愚蠢的错误道歉 无论如何,我创建了一个简单的类,init()是Facebook类对象,如果当前没有getSession()的话,它会提示您登录。现在的问题是,我只能从getSession()中获取NULL,而调用Facebook.login()根本不起任何作用 您将在代码中看到,Facebook.login()是基于是否可以getSession()的有条件的,但我也在没有该检查的情况下尝试了此操作,甚至没有触发回调 有什么想法吗 我遵循了一个教程,以防我的代码中有明显的错误(这是他的错) 代码如下: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()的有条件的,但
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()
或者您的文档类。
在根以外的其他地方做这些会让你做噩梦。
希望这有帮助