使用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); } }
希望能帮助到你。 祝你好运! ;)