2015-04-20 33 views
6

użyłemJak wylogować się z Twittera za pomocą Fabric SDK dla Androida

Twitter.getSessionManager().clearActiveSession(); 

ten nie działa, następnym razem, gdy się zalogować korzystając z Twittera, to otwiera okno z przeglądarki, bierze poprzedni login i po prostu prosi „Zezwól aplikacja do pobierania twoich danych? ", ale nie pyta o nazwę użytkownika i hasło. Każda pomoc zostanie doceniona.

+0

próbowali usuwanie aplikacji katalogu pamięci podręcznej, a także usunięte dane przeglądarki przy użyciu 'Browser.clearHistory (getContentResolver());', wciąż ten sam problem –

Odpowiedz

28

W końcu znalazłem rozwiązanie dla tej sytuacji.

Przypadkowo znalazłem sposób na Twitter SDK dla Androida

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

To było bardzo proste, zajęło mi około pół godziny, aby go odnaleźć.

+1

wiedzieć, jak to zrobić dla IOS obiektywnych c? –

+1

Dosłownie nie mogę znaleźć żadnego odniesienia do tego w dowolnym miejscu. Zastanawiam się, czy metoda jest asynchroniczna, czy też faktycznie. Tkanina jest słabo udokumentowana :( –

+1

CookieSyncManager jest już nieaktualny CookieManager.flush jest możliwą alternatywą – moyheen

13

Teraz CookieSyncManager jest przestarzała, robię to w ten sposób:

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

roztworu roboczego LAST:

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

Przykro mi, ale to nie działa dla mnie Zawsze otrzymuję ostatniego zalogowanego użytkownika Używam ostatniej wersji – AlphaDeveloper

+0

@AlphaDeveloper take wygląd mojej zaktualizowanej odpowiedzi – Choletski

1

Teraz można użyć:

Digits.logout(); 
2

Powyższy metody wymarły.

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