我正在实现一个iOS应用程序,该应用程序将对我的Web服务进行身份验证并接收令牌。我已将WKWebView
嵌入到我的应用程序中,以便可以打开一个特定的网页,该网页中有Javascript试图从本地存储中读取令牌。如何初始化WKWebView
,以便可以从本地存储访问我的令牌?
编辑:以下讨论讲述启用本地存储的方法:iOS WKWebView does not support local storage,但似乎无法从应用程序代码向本地存储添加项目。
答案 0 :(得分:0)
我已经创建了一个视图控制器,它将为您创建Webview实例。
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
//Kind of crazy stuff
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
//General view with page, followed by link
let url = URL(string: "https://google.com")! //example
webView.load(URLRequest(url: url))
}
//I do not sure, is that ui?
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
}
}
答案 1 :(得分:0)
尝试在将要传递给webview的请求标头中设置令牌,例如:
if let url = URL(string: "http://google.com") {
var request = URLRequest(url: url)
request.addValue("auth token value", forHTTPHeaderField: "Authorization")
}
答案 2 :(得分:0)
你可以添加到本地存储:key是AccessToken,value是token
webView.configuration.userContentController.addUserScript(script())
func script() -> WKUserScript {
let source = "localStorage.setItem('AccessToken', '\(getAccessToken())');"
return WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
}