2015-04-20 19 views
6

ho usatoCome il logout da Twitter usando il tessuto SDK per Android

Twitter.getSessionManager().clearActiveSession(); 

Questo non funziona, la prossima volta quando faccio il login usando Twitter, si apre la finestra di dialogo con il browser, prende login precedente e solo chiede "Consentire app per recuperare i tuoi dati? ", ma non chiede nome utente e password. Qualsiasi aiuto sarà apprezzato.

+0

provato a cancellare directory della cache delle applicazioni e anche i dati cancellati del browser utilizzando 'Browser.clearHistory (getContentResolver());', ancora lo stesso problema –

risposta

28

Ho finalmente trovato una soluzione per questa situazione.

Casualmente, ho trovato un metodo twitter SDK per Android

CookieSyncManager.createInstance(this); 
CookieManager cookieManager = CookieManager.getInstance(); 
cookieManager.removeSessionCookie(); 
Twitter.getSessionManager().clearActiveSession(); 
Twitter.logOut(); 

Questo è stato molto semplice, mi ci sono voluti circa mezz'ora per trovarlo.

+1

sa come fare questo per IOS Objective C? –

+1

Non riesco letteralmente a trovare alcun riferimento a questo ovunque. Mi chiedo se il metodo sia asincrono o ciò che effettivamente fa. Il tessuto è scarsamente documentato :( –

+1

Il CookieSyncManager è ora deprecato.Il CookieManager.flush è una possibile alternativa – moyheen

13

Ora che CookieSyncManager è deprecato, lo faccio in questo modo:

public void logoutTwitter() { 
     TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession(); 
     if (twitterSession != null) { 
      ClearCookies(getApplicationContext()); 
      Twitter.getSessionManager().clearActiveSession(); 
      Twitter.logOut(); 
     } 
} 

public static void ClearCookies(Context context) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
      CookieManager.getInstance().removeAllCookies(null); 
      CookieManager.getInstance().flush(); 
     } else { 
      CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(context); 
      cookieSyncMngr.startSync(); 
      CookieManager cookieManager=CookieManager.getInstance(); 
      cookieManager.removeAllCookie(); 
      cookieManager.removeSessionCookie(); 
      cookieSyncMngr.stopSync(); 
      cookieSyncMngr.sync(); 
     } 
    } 
4

soluzione di lavoro ULTIMO:

public static void logoutTwitter() { 
    TwitterSession twitterSession = TwitterCore.getInstance().getSessionManager().getActiveSession(); 
    if (twitterSession != null) { 
     clearTwitterCookies(mAppContext); 
     Twitter.getSessionManager().clearActiveSession(); 
     Twitter.logOut(); 
    } 
} 

public static void clearTwitterCookies(Context context) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
     CookieManager.getInstance().removeAllCookies(null); 
     CookieManager.getInstance().flush(); 

    } else { 
     CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(context); 
     cookieSyncMngr.startSync(); 
     CookieManager cookieManager = CookieManager.getInstance(); 
     cookieManager.removeAllCookie(); 
     cookieManager.removeSessionCookie(); 
     cookieSyncMngr.stopSync(); 
     cookieSyncMngr.sync(); 
    } 
} 
+0

Mi dispiace ma non funziona per me.Ho sempre l'ultimo utente loggato Sto usando l'ultima versione – AlphaDeveloper

+0

@AlphaDeveloper take uno sguardo alla mia risposta aggiornata – Choletski

1

È ora possibile utilizzare:

Digits.logout(); 
2

È possibile che questo i metodi sono estinti.

// twitter log out 
TwitterCore.getInstance().getSessionManager().clearActiveSession();