编辑:修复了大部分问题(但不太清楚为什么)。检查帖子底部的注释。
我正在从头开始我的第一个AS3 Facebook项目,所以对任何愚蠢的错误道歉。
无论如何,我创建了一个简单的类,init()是Facebook类对象,如果当前没有getSession(),则会提示您登录。现在的问题是我永远无法获得除getSession()之外的任何内容,并且调用Facebook.login()根本不会做任何事情。
你会在代码中看到Facebook.login()是有条件的,基于是否可以getSession(),但我已经尝试了这个没有那个检查,我甚至没有得到回调。
有什么想法吗?
我按照http://www.permadi.com/blog/2011/02/using-facebook-graph-api-in-flash-as3-1-5/上的教程,以防万一我的代码中有一些明显错误(这是他的错)。
以下代码:
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);
}
}
我也让它从我的服务器上运行,它正确连接到一个应用程序(根据需要)。你可以在这里看到它:http://themoleking.com/laboratory/facebook_as3/FacebookAPI.html
答案 0 :(得分:0)
好的,所以我通过挖掘Facebook API代码来解决这个问题。
如果在调用Facebook.init()时输入oauth = true,它将自动使所有会话调用为NULL。
我还不太清楚API知道原因,但至少我取得了一些进展:)
答案 1 :(得分:0)
你必须处理所有工作的javascript部分。
在html页面的head部分,包含这些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处理函数触发, 你必须使用此代码嵌入flash电影
<script type=”text/javascript”>
swfobject.embedSWF(“yourfile.swf”, “flashContent”, “1000″, “700″, “9.0″, null, null, null, {name: “flashContent”});
</script>
你的flash对象id必须与跨浏览器名称匹配
然后确保在as3的主时间轴中执行所有Facebook.init()和login() 或您的文档类。 除了root以外的其他地方做它们会让你做恶梦。 希望这个帮助