2012-08-01 122 views
0

我注意到有些遊戲使用Facebook SDK登錄到他們的遊戲。我第一次登錄時,會顯示一個登錄表單並轉到他們的應用程序。註銷並重新登錄後,它不再顯示Facebook登錄表單。如果我想用另一個Facebook帳戶登錄,我必須使用Facebook應用程序。爲什麼?爲什麼遊戲的註銷按鈕不能註銷Facebook?這是一個正確的機制嗎?關於Facebook登錄Android

+0

這是一個有用的問題,下面有一個美麗的答案。如果你關閉它,我肯定有人會再問一次。 – Emerald214 2012-08-07 07:34:02

回答

2

打開Facebook.java被Facebook SDK提供的,然後我有這樣的變化:

public void authorize(Activity activity, String[] permissions, 
      int activityCode, final DialogListener listener) { 

     boolean singleSignOnStarted = false; 

     mAuthDialogListener = listener; 

     /* // Prefer single sign-on, where available. 
     if (activityCode >= 0) { 
      singleSignOnStarted = startSingleSignOn(activity, mAppId, 
        permissions, activityCode); 
     } 
     // Otherwise fall back to traditional dialog. 
     if (!singleSignOnStarted) {*/ 
      startDialogAuth(activity, permissions); 
     // } 
    } 
+0

它的作品!你知道如何用Twitter4J做同樣的事嗎? – Emerald214 2012-08-07 07:29:32

2

使用下面的代碼註銷:

private void logout(Facebook facebook) { 
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
    mAsyncRunner.logout(getBaseContext(), new RequestListener() { 
     @Override 
     public void onComplete(String response, Object state) { 
      Log.i("System out", "Logout:onComplete:res:state " + response 
        + ":" + state); 
      new LoginData(SettingsActivity.this).clearFacebookDataInPref(); 
      handler.sendEmptyMessage(1); 
     } 

     @Override 
     public void onIOException(IOException e, Object state) { 
      Log.i("System out", "Logout:state" + ":" + state); 
      e.printStackTrace(); 
      exceptionMessage = e.getMessage(); 
      handler.sendEmptyMessage(2); 
     } 

     @Override 
     public void onFileNotFoundException(FileNotFoundException e, 
       Object state) { 
      Log.i("System out", "Logout:OnFileNotFoundExce:state:" + state); 
      e.printStackTrace(); 
      exceptionMessage = e.getMessage(); 
      handler.sendEmptyMessage(2); 
     } 

     @Override 
     public void onMalformedURLException(MalformedURLException e, 
       Object state) { 
      Log.i("System out", "Logout:MalformedURLExce:state:" + state); 
      e.printStackTrace(); 
      exceptionMessage = e.getMessage(); 
      handler.sendEmptyMessage(2); 
     } 

     @Override 
     public void onFacebookError(FacebookError e, Object state) { 
      Log.i("System out", "Logout:onFacebookError:state" + state); 
      e.printStackTrace(); 
      exceptionMessage = e.getMessage(); 
      handler.sendEmptyMessage(2); 
     } 
    }); 
} 

如果保存訪問令牌和共享過期首選項,刪除/清除onComplete監聽器..