iOSアプリでGoogleアカウント(Facebookアカウントも同様)を使用してログインすることができるサービスを作ってた時に遭遇しました。
一度、アプリ内のUIWebViewでGoogleアカウントにログイン。
その後、一度ログアウトし、もう一度Googleアカウントでログインしようとすると、メールアドレスとパスワードを聞かれることなく、勝手に前にログインしたアカウントでログインしてしまうという問題に遭遇しました。
UIWebViewのキャッシュを削除しても変わらず。
結果として、Cookieを削除するといけました!
UIWebViewのCookieを削除する
特定のURLのCookieを削除する
hoge.m
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [cookieStorage cookiesForURL:[NSURL URLWithString:@"http://hogehoge.com"]];
[cookies enumerateObjectsUsingBlock:^(NSHTTPCookie *cookie, NSUInteger idx, BOOL *stop) {
[cookieStorage deleteCookie:cookie];
}];
Cookieを全部削除する
hoge.m
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[[cookieStorage cookies] enumerateObjectsUsingBlock:^(NSHTTPCookie *cookie, NSUInteger idx, BOOL *stop) {
[cookieStorage deleteCookie:cookie];
}];
余談
NSArrayの高速列挙はfor-inではなく、enumerateObjectsUsingBlockがオススメです!