我搜索强制FB要求登录信息,但在再次登录时退出后,API跳过步骤并在最后一个用户会话中记录。
答案 0 :(得分:2)
我在网上看到的解决方案都没有对我有用。问题确实是在使用FacebookMobile.logout()调用注销时没有清除StageWebView facebook cookie。使用访问令牌加载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数据。
答案 1 :(得分:1)
这是一个由FacebookMobile,Facebook和FacebookDesktop不断修订的问题。基本上,您需要确保设置FacebookDesktop.manageSession = false;并传递第二个参数“注销”你的网站的api url。 If that doesn't work, the other method is to use "reallyLogout", as detailed here in this thread
评论#24中的注释详细说明了从FacebooMobile(或您正在使用的任何单身)暴露访问令牌的方式,然后使用访问令牌在Facebook上手动调用logout.php方法。
http://code.google.com/p/facebook-actionscript-api/issues/detail?id=297#c24
答案 2 :(得分:0)
这是cookie的问题,我的意思是,当用户在第一个用户中登录API日志时,第一个用户会话仍然存在。
我不知道为什么,但Facebook Api注销方法不会将用户从Facebook中注销,只会将用户从您的应用程序中注销。
如果您找到了解决方案或想到别的东西,请告诉我们,以便我们能够获得解决方案。