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

标签 facebook actionscript-3 facebook-graph-api air

我正在使用 Flash builder 4.5、AIR 2.6、Facebook action script 3 API the latest version 为 Android 制作移动 AIR 应用程序.

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

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);
            }

        }
    }

最佳答案

您只是将 logoutCallback 的第一个参数传递给您的 logout 方法。如果您添加为您的应用程序指定的站点 url 的第二个参数,它应该清除该窗口的 html cookie。另外,设置 FacebookMobile.manageSession = false;

            FacebookMobile.logout(logoutCallback, "http://your_app_origin_url");

存在一个潜在的相关错误,涉及桌面和移动设备无法以相同方式访问或清除访问 token 。为此,有一个 hack 描述了在 FacebookMobile 中公开访问 token ,然后使用访问 token 手动调用“注销”方法。此处描述了该问题,包括一个名为“reallyLogout”的方法。 If what I've written above doesn't work, implement "reallyLogout".

当您注销时,您的应用会清除本地 session ,但不会将您从系统中注销。这在 the documentation for logout. 中有明确定义。想一想,如果您在智能手机、Web 浏览器和现在的移动桌面应用程序上登录 Facebook,然后突然注销……它不应该在任何地方注销您,只是在该浏览器 session 中。所以传递第二个参数。

关于Facebook 操作脚本 3 API 登录/注销问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8198259/

相关文章:

javascript - 在 Javascript SDK 中启用 OAuth 2 后,auth.sessionChange Facebook 事件停止工作

android - 为具有报价问题的 FQL 制作多查询

apache-flex - 按下 'alt'后如何保持焦点?(Adobe AIR应用)

flash - 创建多语言 ActionScript 3.0 网站

javascript - Facebook Feed 对话框调用中是否可以有多个附件?

ios - ShareKit SHKFacebookSessionProxyURL

facebook - 滥用或禁止的内容

flash - 在AS3中识别DisplayObjectContainer中的MovieClip

ruby-on-rails - 使用 Rails 获取 Web 应用程序页面的 FB Likes 总数

php - 无法使用 Facebook OAuth 获取访问 token