gpt4 book ai didi

iphone - UIWebView 是否可以保存并自动填充之前输入的表单值(例如用户名和密码)?

转载 作者:行者123 更新时间:2023-12-03 18:14:49 25 4
gpt4 key购买 nike

我正在构建一个 iPhone 应用程序,它只是一个 UIWebView具有基于表单的登录的现有移动网站。当我在 iPhone Safari 上登录移动网站时,系统会提示我保存用户名/密码,当我稍后返回该网站时,系统会自动填充该用户名/密码。

我想在 UIWebView 中启用相同的功能,但对于我的生活,我不知道该怎么做。有什么想法吗?

<小时/>

解决方案

按照迈克尔的基本模型(参见已接受的答案),我能够完成这项工作。这是我所做的:

设置数据

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {

//save form data
if(navigationType == UIWebViewNavigationTypeFormSubmitted) {

//grab the data from the page
NSString *username = [self.webView stringByEvaluatingJavaScriptFromString: @"document.myForm.username.value"];
NSString *password = [self.webView stringByEvaluatingJavaScriptFromString: @"document.myForm.password.value"];

//store values locally
[[NSUserDefaults standardUserDefaults] setObject:username forKey:@"username"];
[SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:@"MyService" updateExisting:YES error:nil];

}

}

获取数据

- (void)webViewDidFinishLoad:(UIWebView *)webView{

//verify view is on the login page of the site (simplified)
NSURL *requestURL = [self.webView.request URL];
if ([requestURL.host isEqualToString:@"www.mydomain.com"]) {

//check for stored login credentials
NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];

if (username.length != 0 ) {

//create js strings
NSString *loadUsernameJS = [NSString stringWithFormat:@"document.myForm.username.value ='%@'", username];
NSString *password = [SFHFKeychainUtils getPasswordForUsername: username andServiceName:@"MyService" error:nil];
if (password.length == 0 ) password = @"";
NSString *loadPasswordJS = [NSString stringWithFormat:@"document.myForm.password.value ='%@'", password];

//autofill the form
[self.webView stringByEvaluatingJavaScriptFromString: loadUsernameJS];
[self.webView stringByEvaluatingJavaScriptFromString: loadPasswordJS];

}
}
}

请注意,我正在使用 Buzz Andersen 的精彩 SFHFKeychainUtils用于将敏感数据存储到 iOs 钥匙串(keychain)的包。

为了使 SFHFKeychainUtils 正常工作,您需要执行以下操作:

  1. 添加SFHFKeychainUtils.hSFHFKeychainUtils.m到您的项目
  2. 添加 Security.framework到您的项目
  3. #import <Security/Security.h>#import "SFHFKeychainUtils.h"

最佳答案

从我看来,我认为没有一个简单的方法可以做到这一点。以下是可能的一个想法:

  • 创建您的 uiwebview
  • 创建 nsurl 请求
  • 在 webview 委托(delegate)页面加载函数触发后,查看请求的 http 正文
  • 找到登录表单(常见登录表单的正则表达式?)
  • 检索为用户提供保存并稍后检索的选项

关于iphone - UIWebView 是否可以保存并自动填充之前输入的表单值(例如用户名和密码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4772341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com