2015-12-08 94 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