1

我正在做一个 iphone 应用程序,我使用网站的 OAuth api 登录以进行登录过程,并且 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"];
}

首先,我什至不确定这段代码是否有效。我怎么知道它是否清除了所有的cookies。?意思是,如何通知我它是否已成功清除?

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

4

1 回答 1

2

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

#import <Foundation/NSHTTPCookie.h>


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

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

于 2012-07-24T11:33:05.090 回答