我正在使用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];
}
}
期待听到您的回复!
答案 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