如何使用已经存在的承载令牌初始化WKWebView

时间:2019-08-13 08:14:25

标签: ios swift wkwebview

我正在实现一个iOS应用程序,该应用程序将对我的Web服务进行身份验证并接收令牌。我已将WKWebView嵌入到我的应用程序中,以便可以打开一个特定的网页,该网页中有Javascript试图从本地存储中读取令牌。如何初始化WKWebView,以便可以从本地存储访问我的令牌?

编辑:以下讨论讲述启用本地存储的方法:iOS WKWebView does not support local storage,但似乎无法从应用程序代码向本地存储添加项目。

3 个答案:

答案 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)
}