通过webview-iphone中的javascript清除cookie

时间:2012-07-24 04:29:40

标签: javascript iphone cookies logout clear

我正在做一个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。意思是,如何通知我是否已成功清算?

我选择做的是最好的方法吗?还是有其他方法可以提供注销选项?

1 个答案:

答案 0 :(得分:2)

好的,我解决了这个问题..

#import <Foundation/NSHTTPCookie.h>


NSHTTPCookie *aCookie;
for (aCookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) 
{
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:aCookie];
}

这将删除uiwebview中的所有cookie。效果很好。