2015-04-20 4 views
6

von Twitter mit Stoff Sdk abzumelden IWie für android

Twitter.getSessionManager().clearActiveSession(); 

arbeiten Dies gilt nicht, das nächste Mal verwendet, wenn i twitter Login, öffnet sie den Dialog mit Browser nimmt vorherige Anmeldung und fragt nur „Allow App, um Ihre Daten zu holen? ", fragt aber nicht nach Benutzername und Passwort. Jede Hilfe wird geschätzt.

+0

versuchte Anwendung Cache-Verzeichnis zu löschen und auch Browser-Daten mit 'Browser.clearHistory (getContentResolver()) gestrichen;', immer noch das gleiche Problem –

Antwort

28

Ich habe endlich eine Lösung für diese Situation gefunden.

Versehentlich, fand ich eine Methode in Twitter-SDK für Android

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

Das war sehr einfach, es dauerte etwa eine halbe Stunde, um es zu finden.

+1

wissen, wie dies zu tun für IOS Ziel c? –

+1

Ich kann buchstäblich nirgendwo einen Hinweis darauf finden. Ich frage mich, ob die Methode asynchron ist oder was sie tatsächlich tut. Fabric ist schlecht dokumentiert :( –

+1

Der CookieSyncManager ist jetzt veraltet. CookieManager.flush ist eine mögliche Alternative. – moyheen

13

Nun, da CookieSyncManager veraltet ist, kann ich es so:

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

LAST-Arbeitslösung:

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

Es tut mir leid, aber das funktioniert nicht für mich. Ich bekomme immer den letzten Benutzer angemeldet. Ich verwende die letzte Version. – AlphaDeveloper

+0

@ AlphaDeveloper nehmen ein Blick auf meine aktualisierte Antwort – Choletski

1

können Sie jetzt:

Digits.logout(); 
2

Die oben Methoden sind ausgestorben.

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