2015-12-08 55 views
3


我开发Android游戏拥有Facebook登录和我面对试图注销时,以下怪异的行为:
如果用户按下Facebook的注销按钮,关闭该应用程序然后再次重新打开,用户仍然登录(=访问令牌仍然有效)。 作为测试,我在注销后检查了访问令牌,它应该是空的,但是如果我关闭并重新打开该应用,那么访问令牌再次不为空。
看起来,即使在注销之后,Facebook缓存访问令牌并将其从缓存中取出。

我尝试使用本地Facebook按钮,并LoginManager.getInstance.logout();我已经在onCreate的顶部初始化Facebook sdk,在setContent()之前,我遵循Facebook文档上的过程,但结果相同。

我使用的是Facebook sdk 4.6.0,我在Android 4.2.2和4.4.2上遇到了这个问题。

编辑

下面的代码:

- Facebook的按钮:

Facebook的注销不起作用的Android [Facebook的SDK 4]

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

任何sugg estion?

预先感谢

+0

包括你的代码,这样我们可以帮忙吗? – Shawn

+0

对,对不起。我在编辑中添加了代码。谢谢 –

+0

任何人都可以帮忙吗? –

回答

2

好,i`ve被打那个该死的SDK约一个小时,发现该注销的问题一个简单的解决方法。

只是尽量做到以下几点: LoginManager.getInstance()setLoginBehavior(LoginBehavior.WEB_ONLY)

优点:LoginManager.getInstance()退出()在这种情况下正常工作。

缺点:身份验证将始终显示在webview对话框中。

+0

为我工作! –

+0

感谢您的建议,但在我的情况下,我使用这个'LoginManager.getInstance()。setLoginBehavior(LoginBehavior.WEB_VIEW_ONLY);' – vuhung3990