Facebook动作脚本3 API登录/注销问题

yoz*_*hik 3 air facebook actionscript-3 facebook-graph-api

我正在使用Flash builder 4.5,AIR 2.6,Facebook动作脚本3 API为Android制作移动AIR应用程序的最新版本.

我有登录/注销的问题.我只能登录一次 - 然后我的数据以某种方式缓存,Facebook会自动登录.当我调用logout时,我收到响应TRUE,但我没有真正从系统注销.我没有出现标准登录对话框.我已经在官方网站上阅读了很多关于stackoverflow和open问题的文章,但是没有一篇文章有​​用.我怎么解决这个问题?这是我使用的代码:

package
{
    import flash.display.DisplayObject;
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.external.ExternalInterface;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.system.Capabilities;
    import flash.system.Security;
    import flash.display.Loader;
    import com.facebook.graph.FacebookMobile;

        public class TestProj extends Sprite
        {
            public function TestProj()
            {
                super();

                //register to add to stage
                this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

                // support autoOrients
                stage.align = StageAlign.TOP_LEFT;
                stage.scaleMode = StageScaleMode.NO_SCALE;
            }

            private function onAddedToStage(event:Event):void
            {
                this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

                FacebookMobile.init("195053007196177", initCallback);
            }

            private function initCallback(success:Object, fail:Object):void
            {
                var appPermissions:Array = new Array("read_stream", "offline_access", "publish_stream", "read_friendlists");
                FacebookMobile.login(loginCallback, this.stage, appPermissions);
                //FacebookMobile.logout(logoutCallback);
            }

            private function loginCallback(success:Object, fail:Object):void
            {       
//And here I always receive success with my UserID
//and login dialog don't appears to me before this  
                if (success)
                {
                    trace("login ok");
                }
                else
                    trace("login failed");
            }

            private function logoutCallback(success:Object):void
            {
//here I reseive "TRUE" always!!
                trace(success);
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

Dom*_*edi 6

您只是将logoutCallback的第一个参数传递给logout方法.如果您添加为您的应用指定的网站网址的第二个参数,则应将其清除为该窗口的html Cookie.另外,设置FacebookMobile.manageSession = false;

            FacebookMobile.logout(logoutCallback, "http://your_app_origin_url");
Run Code Online (Sandbox Code Playgroud)

有一个潜在的相关错误,涉及桌面和移动设备无法以相同的方式访问或清除访问令牌.为此,有一个hack描述了在FacebookMobile中暴露访问令牌,然后用访问令牌手动调用"注销"方法.这里描述了该问题,包括一个名为"reallyLogout"的方法.如果我上面写的不起作用,请实现"reallyLogout".

当您注销时,您的应用会清除本地会话,但不会将您从系统中注销.注销文档中明确定义了这一点.想想看,如果你在智能手机,网络浏览器和现在的移动桌面应用程序上登录Facebook,突然你注销了...它不应该在任何地方,只是在浏览器会话中注销你.所以传递第二个参数.