使用UIWebView在iOS应用中登录Instagram时出错

我在iOS应用程序上使用UIWebView跟踪Instagram身份validation [推荐]步骤。 输入凭据后,点击登录会加载包含以下错误的页面。

无法加载此页面。 如果您在浏览器中禁用了cookie,或者您正在以私人模式浏览,请尝试启用cookie或关闭私人模式,然后重试您的操作。

并且,这仅在首次运行身份validation步骤时发生; 在下一次尝试中,一切都像丝绸一样顺畅。 我得到代码后缀为重定向url,我使用它请求访问令牌。

截图:

在此处输入图像描述

这里已经有另一个问题了 ,但没有用。

编辑:好像是Cookies问题。 虽然,我还没能解决它。

当我删除cookie以确保登录屏幕出现时,我遇到了类似的问题,而不仅仅是使用当前登录的用户。 尝试(迅捷):

let storage = HTTPCookieStorage.shared storage.cookieAcceptPolicy = .always 

大约一小时前我设法解决了这个问题。

首先,不要使用UIWebView或WebView; 改为使用WKWebView 。

你看,你需要实现这个方法

 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error 

当Instagram的登录页面将您转发到您的redirect_url时,它将无法导航。 可能是因为我们没有进行服务器端身份validation,只是客户端身份validation,而redirect_url不是有效的URL。 我们期望页面重定向到无效的URL,但是当发生这种情况时,WKWebView不会调用该方法

 - (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation 

或方法

 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation 

所以。 您需要做的是关注第一个方法,检查error变量,并提取error.userInfo

就我而言,这就是我解决问题的方法:

 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error { NSURL *err = [error.userInfo objectForKey:@"NSErrorFailingURLKey"]; if([err.absoluteString hasPrefix:INSTA_REDIRECT_URL]){ NSString *token = [[err.absoluteString componentsSeparatedByString:@"#access_token="] objectAtIndex:1]; [Utils saveToken:token]; [self.webView setHidden:YES]; //open next view controller }else{ //TODO: No internet? something else went wrong.. NSLog(@"Error: %@", error); } } 

希望能帮助到你。 祝你好运! ;)