问题
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.
回答1:
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()
回答2:
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();
}
}
回答3:
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();
}
}
回答4:
The above methods are extinct.
// twitter log out
TwitterCore.getInstance().getSessionManager().clearActiveSession();
回答5:
You can now use:
Digits.logout();
回答6:
TwitterCore.getInstance().getSessionManager().clearActiveSession();
This one is the logout
method when you are login with Twitter Auth
回答7:
To logout current user simply call
mTwitter.shutdown();
来源:https://stackoverflow.com/questions/29743676/how-to-logout-from-twitter-using-fabric-sdk-for-android