1

ログインプロセスにWebサイトのOAuthAPIを使用してログインし、uiwebviewのステータスが常にログインしたままになるiPhoneアプリケーションを実行しています。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)ログアウトボタンのあるViewControllerの1つにこのコードを追加しました。ボットンがクリックされるとすぐに、このコードが実行されます

- (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がクリアされたかどうかはどうすればわかりますか?つまり、クリアに成功したかどうかはどのように通知されますか?

これを行うための最良の方法は何を選択するのですか、それともログアウトオプションを提供する他の方法はありますか?

4

1 に答える 1

2

OK私は問題を解決しました。

#import <Foundation/NSHTTPCookie.h>


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

これにより、uiwebview内のすべてのCookieが削除されます。よく働く。

于 2012-07-24T11:33:05.090 に答える