Reputation: 1548
I used
Twitter.getSessionManager().clearActiveSession();
This does not work,next time when i logIn using twitter, it opens the dialog with browser,takes previous login and just asks "Allow app to fetch your data?", but doesn't ask for username and password.Any help will be appreciated.
Upvotes: 6
Views: 9009
Reputation: 1548
I finally found a solution to this situation.
Accidentally, I found a method in Twitter SDK Kit for Android
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
Twitter.getSessionManager().clearActiveSession();
Twitter.logOut();
This was very simple, it took me about half an hour to find it.
For version 3.0 and above
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
TwitterCore.getInstance().getSessionManager().clearActiveSession()
Upvotes: 35
Reputation: 141
To logout current user simply call
mTwitter.shutdown();
Upvotes: 0
Reputation: 239
The above methods are extinct.
// twitter log out
TwitterCore.getInstance().getSessionManager().clearActiveSession();
Upvotes: 2
Reputation: 7525
LAST WORKING solution:
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();
}
}
Upvotes: 4
Reputation: 1460
Now that CookieSyncManager is deprecated, I do it this way:
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();
}
}
Upvotes: 13