登录 ios swift 后从 wkwebview 获取令牌

Posted

技术标签:

【中文标题】登录 ios swift 后从 wkwebview 获取令牌【英文标题】:get the token from wkwebview after login in ios swift 【发布时间】:2018-05-20 08:33:28 【问题描述】:

我正在 wkwebview 中加载一个用于登录的 url。成功登录后,它会将其重定向到内页,当单击按钮时,它将从那里重定向到生成令牌的另一个页面。生成令牌后如何将其推送到快速应用程序。我需要将该令牌用于我的应用程序中进一步使用。不知道这是否是重复的问题,但在过去的两天里我找不到任何解决方案。请帮助提供完整的解决方案

这是我的代码

 override func loadView() 

        super.loadView()

        let url = URL(string: "urlString")
        let request = URLRequest(url:url!)

        let config = WKWebViewConfiguration()

        self.webView = WKWebView(frame: self.view.bounds, configuration: config)

        webView?.load(request)

        self.view.addSubview(webView!)


    

如何进一步获取令牌

【问题讨论】:

【参考方案1】:

在配置中的用户内容控制器中添加消息名称

config.userContentController.add(self, name: "setToken")

在您的视图控制器中添加以下扩展

extension ViewController: WKScriptMessageHandler 
    func userContentController(_ userContentController: WKUserContentController,
                               didReceive message: WKScriptMessage) 

        if (message.name == "setToken")
            if let token = message.body as? String
                print(token)
            

        
        print("Received message from native: \(message)")
    

从 js 传递你的令牌

window.webkit.messageHandlers.setToken.postMessage(TOKEN_STRING);

【讨论】:

javascript 中传递 authToken 是否是最佳实践且安全?

以上是关于登录 ios swift 后从 wkwebview 获取令牌的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 WKWebView 进行身份验证

如何在IOS APP中通过swift/javascript登录网站

swift 笔记:iOS与JavaScript的交互(三):WKWebView 1.新建WKWebView加载本地,远程页面

在 WKWebView (iOS, Swift) 中使用本地 Javascript 源加载本地 HTML

iOS Swift5.0 WKWebView使用JS与Swift交互

swift [初学者来自iOS中WKWebView的简单浏览器] Chp6的青铜挑战程序设计查看Big Nerd Ranch #tags:swift3,ios,UIView,WKWebview