如何从我的iOS应用程序中删除Twitter的会话和cookie

时间:2015-11-16 06:07:08

标签: ios objective-c twitter session-cookies twitter-fabric

我正在使用Fabric SDK for Twitter登录我的应用程序。

我想从我的iOS应用程序中删除Twitter的会话和cookie。因为我使用此SDK从Twitter成功登录第一次。但是,如果用户想要使用Twitter将其他凭据登录到我的应用程序中,那么没有明确的会话就无法实现。

对于Twitter的清晰会话,我使用以下代码。但它不起作用。

[[Twitter sharedInstance]logOut];
[[Twitter sharedInstance]logOutGuest];
NSHTTPCookieStorage *cookieList = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *x in cookieList.cookies)
{
     if ([[x valueForKey:@"domain"] isEqualToString:@".twitter.com"])
     {
           [cookieList deleteCookie:x];
     }
}

期待听到您的回复!

2 个答案:

答案 0 :(得分:1)

尝试添加此项以删除Cookie

    let cookie = NSHTTPCookie.self
    let cookieStorage = NSHTTPCookieStorage.sharedHTTPCookieStorage()

    for cookie in cookieStorage.cookies!
    {
       cookieStorage.deleteCookie(cookie)
    }

在Objective-C

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *httpCookie in cookieStorage.cookies)

{
    if ([[httpCookie valueForKey:@"domain"] isEqualToString:@".twitter.com"])
    {
        [cookieStorage deleteCookie:httpCookie];
    }
}

答案 1 :(得分:1)

您是否使用断点以了解它是否进入de if条件?

顺便说一下,你必须更改代码,在枚举时你不能从数组中删除一个对象。也许你可以使用另一个变量来保存cookie,当你找到它并将其从forin循环中移除

//编辑

NSHTTPCookieStorage *cookieList = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSMutableArray *cookies = [[NSMutableArray alloc] init];
for (NSHTTPCookie *x in cookieList.cookies)
{
     if ([[x valueForKey:@"domain"] isEqualToString:@".twitter.com"])
     {
         [cookies addObject:x];
     }
}
if (cookies.count > 0) {
    for (NSHTTPCookie *cookie in cookies) {
        [cookieList deleteCookie:cookie];
    }
}

我创建了一个数组,因为我不知道有多少cookie来自twitter