Swift WKWebView:Google OAuth弹出视图
我有一个WKWebView,其中有一个服务/网站正在使用Google OAuth访问Google Drive。由于正常的网站打开一个弹出窗口,关闭它,并提示服务网站上的文件选择器,我需要处理该弹出功能 因此,我已经集成了以下内容,以便在单独的WKWebView上打开GoogleOAuthSwift WKWebView:Google OAuth弹出视图,swift,macos,oauth,popup,wkwebview,Swift,Macos,Oauth,Popup,Wkwebview,我有一个WKWebView,其中有一个服务/网站正在使用Google OAuth访问Google Drive。由于正常的网站打开一个弹出窗口,关闭它,并提示服务网站上的文件选择器,我需要处理该弹出功能 因此,我已经集成了以下内容,以便在单独的WKWebView上打开GoogleOAuth func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigatio
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
if navigationAction.targetFrame == nil {
let url = navigationAction.request.url
if url?.description.lowercased().range(of: "https://accounts.google.com") != nil {
self.popupWebView.load(URLRequest(url: url!))
return self.popupWebView
}
}
return nil
}
这正如预期的那样工作——但是空/白的WebView应该自动关闭——但是它没有。为了自动关闭,我添加了这个委托方法
func webViewDidClose(_ webView: WKWebView) {
webView.removeFromSuperview()
print("--- Close webview")
}
问题1:但此方法不会被调用-可能是因为Google源代码关闭弹出窗口的方式没有被此委托方法捕获?当我在real Browser选项卡中打开确切的OAuth URL时,它也会保持打开状态,但服务网站中的弹出窗口会自动关闭。但这只是关于结束。。。这不是主要问题
问题2:但我真的很想知道如何将OAuth弹出窗口中的“postmessage”发送到应该显示文件选择器的主WebView。如何从popupView捕获postmessage并将其传输到主WebView
这就是我坚持了几个小时的观点