apache-flex - As3 Graph API 注销

标签 apache-flex facebook air logout

我正在开发一个由不同用户玩的应用程序,但我使用 as3 graph api 来验证用户身份并在他们的墙上发布,并且我需要在下一个用户开始 session 之前注销每个用户在 as3 图形 API 上: http://code.google.com/p/facebook-actionscript-api/

我搜索强制 FB 询问登录信息,但注销后再次登录时,API 会跳过该步骤并在最后一个用户 session 上登录。

最佳答案

我在网上看到的解决方案都不适合我。问题确实是 StageWebView facebook cookie 在注销时没有通过 FacebookMobile.logout() 调用清除。使用访问 token 加载 logout.php 对我没有帮助,可能是因为空中应用程序没有有意义的“下一个”参数值。我看到有人建议在那里使用 localhost 或 facebook.com,但这些选项都不起作用。

我提出了一个非常有问题的解决方案,但它目前有效。 重点是在 Facebook 中注销用户,就像他自己注销一样。为此,我们需要在 StageWebView 中加载 facebook.com 并单击注销。注销按钮是“logout_form”html 表单的提交表单项。所以我们需要进行 JavaScript 调用

document.getElementById('logout_form').submit();

在我们的 StageWebView 中。我们可以通过调用

来做到这一点
webView.loadURL("javascript:document.getElementById('logout_form').submit();");

在 ActionScript 中。

我现在使用的完整代码

protected var _logoutAttemptInProgress:Boolean = false;
public function fbLogout():void{
if(!_isLoggedIn) return;
if(_logoutAttemptInProgress) return;
_logoutAttemptInProgress = true;

var webView:StageWebView = new StageWebView();
webView.viewPort = new Rectangle(-1, 0, 1, 1);          
webView.stage = this.stage;         
webView.loadURL("http://www.facebook.com/lksmlrsgnlskn");
webView.addEventListener(Event.COMPLETE, runLogoutJs);

function runLogoutJs(event:Event):void{
    webView.removeEventListener(Event.COMPLETE, runLogoutJs);
    var jsString:String = "document.getElementById('logout_form').submit();";
    webView.loadURL("javascript:"+jsString);
    webView.addEventListener(Event.COMPLETE, closeWebView);
}

function closeWebView(event:Event):void{
    webView.removeEventListener(Event.COMPLETE, closeWebView);
    webView.stage = null;
    webView.dispose();

    _isLoggedIn = false;
    _logoutAttemptInProgress = false;
}

FacebookDesktop.logout(null, APP_ORIGIN);
}

“lksmlrsgnlskn”只是一些随机垃圾,用于访问比主页面小得多且加载速度更快的错误页面。

FacebookDesktop.logout 用于清除 Facebook lib 可能仍然拥有的任何本地 SharedObject 数据。

关于apache-flex - As3 Graph API 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828072/

相关文章:

java - 如何使用 Adob​​e Flex 从客户端加载 .properties 文件?

apache-flex - 弹性 : Swapping two elements in Array Collection

apache-flex - 将 CURL 转换为 FLEX HTTP 请求

apache-flex - 用不确定的微调器替换 Flex 预加载器杆?

android - 第一次通话时获取当前的 Facebook ID

android - Adobe AIR for Android - 打开 native Facebook 应用程序

facebook - 使用用户名/密码以编程方式登录 Facebook

用于 React Native 的 Facebook 重定向像素代码

android - 通过 USB 查看 Android 上的 Adob​​e AIR 应用程序目录

actionscript-3 - 当尝试选择 BLOB 类型的列时,SQLStatement 抛出 RangeError #2006 : The supplied index is out of bounds