我正在做一个iphone应用程序,我使用该网站的OAuth apis登录进行登录过程,并且uiwebview中的状态始终保持记录状态。我想清除uiwebview中的cookie会帮助我退出。我想要对应用程序说出一个注销选项。我这样做是为了清除uiwebview中的所有cookie。
1)我创建了一个script.js并将其添加到具有以下代码
的项目中function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
2)我已将此代码添加到其中一个具有注销按钮的视图控制器中。单击按钮后,将执行此代码
- (void)injectJavascript:(NSString *)resource {
NSString *jsPath = [[NSBundle mainBundle] pathForResource:resource ofType:@"js"];
NSString *js = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:NULL];
[webView stringByEvaluatingJavaScriptFromString:js];
}
-(void)logoutFromApp
{
[self injectJavascript:@"script"];
}
首先,我甚至不确定此代码是否正常工作。我怎么知道它是否已经清除了所有的cookie。意思是,如何通知我是否已成功清算?
我选择做的是最好的方法吗?还是有其他方法可以提供注销选项?
答案 0 :(得分:2)
好的,我解决了这个问题..
#import <Foundation/NSHTTPCookie.h>
NSHTTPCookie *aCookie;
for (aCookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies])
{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:aCookie];
}
这将删除uiwebview中的所有cookie。效果很好。