2012-01-18 94 views
7

我想通過刪除由其創建的Cookie來註銷我的Twitter帳戶。我能夠以檢索由Twitter使用代碼創建的cookie:如何通過刪除Cookie來註銷Twitter帳戶?

String twit_cookie = getCookie ("http://www.twitter.com"); 

但我怎麼只能刪除由Twitter創建的cookie,因爲removeAllCookie()刪除瀏覽器中創建的所有Cookie。我怎樣才能通過URL或名稱刪除特定的Cookie?

請幫忙...

+3

結帳這裏的答案:http://stackoverflow.com/questions/2834180/how-to-remove-cookies-using-cookiemanager-for-a-specific-domain – 2014-08-09 00:03:48

回答

3

CookieManager類有一個方法setCookie。你有沒有嘗試過這樣的:

setCookie("http://www.twitter.com", null); 

或許

setCookie("http://www.twitter.com", "auth_token=''"); 
3

您可以使用該方法CookieManager#setCookie(String url, String value)。正如文檔中所述:

爲給定的URL設置一個cookie。任何具有相同主機,路徑和名稱的現有cookie都將被替換爲新的cookie。

「最清晰的」方法是將由twitter創建的所有Cookie設置爲過期(過去的時間)。代碼從this answer幾乎是正確的,除了日期是未來。
修改後的代碼:

final String domain = "http://www.twitter.com"; 
CookieSyncManager.createInstance(this); 
CookieManager cookieManager = CookieManager.getInstance(); 
String cookiestring = cookieManager.getCookie(domain); //get all cookies 
String[] cookies = cookiestring.split(";"); 
for (int i=0; i<cookies.length; i++) { 
    String[] cookieparts = cookies[i].split("="); //split cookie into name and value etc. 
    // set cookie to an expired date 
    cookieManager.setCookie(domain, cookieparts[0].trim()+"=; Expires=Wed, 31 Dec 2000 23:59:59 GMT"); 
} 
CookieSyncManager.getInstance().sync(); //sync the new cookies just to be sure 
+0

什麼這個 ? 「所設置的cookie一定不能過期,不能是會話cookie,否則會被忽略。」 http://developer.android.com/reference/android/webkit/CookieManager.html#setCookie(java.lang.String,java.lang.String) – trante 2014-08-15 18:06:21

+0

@trante [This answer](http:// stackoverflow。 com/a/11621738/2829009)表示文檔錯誤,並且與過期的cookie一起工作。如果它不起作用,請將cookie設置爲將來幾秒鐘,以便它有效,但在短時間後過期。 – Manu 2014-08-16 08:57:10