我在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); 决定不这样做。
提前感谢您的帮助。
答案 0 :(得分: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();
}
所以基本上现在我没有添加一个事件监听器,当用户连接时调用回调函数,如果会话没有准备好我重定向并返回...当会话准备就绪时我会自动开始获取信息。
我不确定在完全登录之前我是否会遇到问题,但是到目前为止我做了很多测试并且它似乎有效。
如果有人有更好的解决方案,请告诉我。