UIWebView 不保存 cookie

UIWebView not save cookies

我使用用户登录帐户的UIWebView。用户可以使用 facebook 帐户登录。他正在单击 Facebook 按钮并打开 UIWebView。登录 UIWebView 后关闭,用户可以使用您的个人帐户。但是当我关闭我的应用程序并再次打开它时,用户无法登录。 UIWebView 不保存cookies。 我找到了这个答案 并在我的应用程序中添加了这段代码。这只是暂时有效。我关闭了我的应用程序并在数小时内再次打开它,用户无法登录。 我试图改变这一行

[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];

到这个

[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:100*12*30*60*60] forKey:NSHTTPCookieExpires];

但这对我没有帮助。

Cookie 是临时的,当您重新启动应用程序时它会奇迹般地恢复。

您需要将 cookie 或凭据保存在钥匙串中,并在重新启动后取回。

我遇到过这样的问题。我尝试了很多方法。我决定使用肮脏的 hack :D 这就是我的方式:

当我为 facebook(或其他)获取 NSHTTPURLResponse 时,我将请求 url 保存到 NSUserDefaults:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
    if ([[httpResponse URL].absoluteString isEqualToString:@"http://www.simple.com/"])
    {
        [[NSUserDefaults standardUserDefaults] setURL:self.url forKey:@"urlLogin"];
        [self dismissViewController];
    }
}

当我打开我的应用程序时,我使用 NSURLRequest 和我存储的 url:

NSURLRequest *request = [NSURLRequest requestWithURL:[[NSUserDefaults standardUserDefaults] URLForKey:@"urlLogin"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:3.0];
[NSURLConnection connectionWithRequest:request delegate:self];