Facebook注销无法工作Android [Facebook sdk 4]

6
我正在开发一款Android游戏,其中包含Facebook登录功能。然而,当我尝试注销时,我遇到了以下奇怪的问题:
如果用户按下Facebook注销按钮,关闭应用程序,再次打开应用程序,则用户仍然处于登录状态(即访问令牌仍然有效)。 为了测试,我在注销后检查了访问令牌,它的值为null,但是如果我关闭并重新打开应用程序,那么访问令牌又不为null了。
看起来Facebook会缓存访问令牌,并在注销后仍从缓存中获取它。

我尝试使用本机Facebook按钮以及LoginManager.getInstance.logout()方法。我已在onCreate的顶部初始化了Facebook sdk,setContent()之前,而且我按照Facebook文档上的过程进行了操作,但结果相同。

我正在使用Facebook sdk 4.6.0,且我在Android 4.2.2和4.4.2上遇到了此问题。

编辑

这是代码:

- Facebook按钮:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_settings);
    btnFacebookLogout.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException e) {

        }
    });
}

普通按钮:

btnNormalLogout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LoginManager.getInstance().logOut();
        }
    });

有什么建议吗?

提前感谢。

请包含您的代码,这样我们才能提供帮助。 - Shawn
是的,抱歉。我在编辑中添加了代码。谢谢。 - mirko flauto
尝试在回调函数中将访问令牌设置为 null,看看是否有帮助? - ifaour
你的意思是在 onSuccess 函数内部吗? - mirko flauto
请问您能告诉我您是如何解决它的吗? - Atheer
1个回答

6

好的,我已经花了一个小时与那个可恶的SDK作斗争,并发现了一个简单的解决方法来解决注销问题。

只需尝试以下操作:LoginManager.getInstance().setLoginBehavior(LoginBehavior.WEB_ONLY)

优点:在这种情况下,LoginManager.getInstance().logOut() 可以正常工作。

缺点:身份验证将始终出现在Webview对话框中。


对我起作用了!! - Pratik Pitale
2
谢谢您的建议,但在我的情况下,我使用这个 LoginManager.getInstance().setLoginBehavior(LoginBehavior.WEB_VIEW_ONLY); - vuhung3990
它对我不起作用,我仍然有同样的问题。 - Atheer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接