我正在为学校网站制作一个简单的iOS应用程序 . 该应用程序具有内置的UIWebView来加载网站的登录页面 . 用户第一次加载页面时,他/她需要像以前一样登录 . 我希望应用程序可以保存用户的用户名/密码 . 因此,下一个用户用户应用程序,它会自动填充并提交表单以自动登录 .
我发现stack overflow.com的几个链接非常有帮助 . 例如,
[2] Autofill Username and Password in UIWebView
我试图为我的程序做同样的事情 . 自动填充部分适用于硬编码的测试用户名/密码 . 但是,我遇到了从UIWebView保存凭据的问题 . “stringByEvaluatingJavaScriptFromString:@”方法不从HTML检索元素 .
我的代码如下 . 我使用viewDidLoad加载网站,并希望使用webView保存凭据 .
- (void)viewDidLoad {
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:urlString];
NSString *urlString = @"https://learn.packagingschool.com/users/sign_in";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:urlRequest];
[self.webView setDelegate:self];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {
//save form data
if(navigationType == UIWebViewNavigationTypeFormSubmitted) {
//grab the data from the page
NSString *inputEmail = [webView stringByEvaluatingJavaScriptFromString: @"document.getElementByID('user_email').value"];
NSString *inputPassword = [webView stringByEvaluatingJavaScriptFromString: @"document.getElenebtByName('user[password]')[0].value"];
NSLog(@"email is %@\npassword is %@", inputEmail, inputPassword);
//store values locally
[[NSUserDefaults standardUserDefaults] setObject:inputEmail forKey:@"email"];
[[NSUserDefaults standardUserDefaults] setObject:inputPassword forKey:@"password"];
NSLog(@"email is %@\npassword is %@", inputEmail, inputPassword);
//[SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:@"MyService" updateExisting:YES error:nil];
}
return YES;
}
当我单击webView中的提交按钮时,没有从网站检索到的字符串 .
2017-02-23 11:19:46.732 Packaging School[441:5425] email is
password is
2017-02-23 11:19:46.755 Packaging School[441:5425] email is
password is
请帮我解决问题 . 非常感谢你!
2 回答
更改
至