如何在 WkWebView 切换到 SFSafariViewController 中实现 Google 登录

Posted

技术标签:

【中文标题】如何在 WkWebView 切换到 SFSafariViewController 中实现 Google 登录【英文标题】:How to implement Google Login in a WkWebView switching to SFSafariViewController 【发布时间】:2017-12-19 07:35:36 【问题描述】:

我有一个ios App,它基本上使用WkWebView 运行一个移动网站。在移动网站中,用户可以使用 Google 帐户登录

由于google will not allow WebViews to use Google Sign in 不再存在,我如何登录我的用户?

我想到了两个解决方案:

    拦截 google 登录 URL (account.google.com/) 并打开 SFSafariViewController,然后以某种方式在我的 WkWebView 中获取回调?

      拦截 google 登录 URL 并使用 Google Sign in SDK 中继 SFsafariViewController 但只会给我一个 userToken 我必须将其发送到我的网站并在服务器端。

有没有一种简单的方法可以在不处理令牌的情况下对用户进行身份验证?

【问题讨论】:

【参考方案1】:

我解决了。

基本上,当 WkWebkit 启动 account.google.com URL 时,我会拦截它并启动 Google 本地库以进行登录,这会启动 SFSafariViewController(在 iOS 9+ 中,在以前的版本中回退到 WebView)。 当用户完成登录后,我会收到一个对我的应用程序的 URL 调用,我在应用程序委托中处理并获取用户信息。

在用户对象中,有一个 serverAuthcode,我需要将它发送到我的后端服务器,以便它对 google 用户进行身份验证。 (我基本上是重新创建了服务器期望的 oauth 回调 URL)

【讨论】:

以上是关于如何在 WkWebView 切换到 SFSafariViewController 中实现 Google 登录的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中的 WKWebView - 用户与网站交互时如何切换视图?

UIWebView 无缝切换到 WKWebView

如何清除 UIWebView/WKWebView 的内容?

如何在WKWebView中禁用YouTube视频的自动播放?

WKWebView 阅读器视图

WKWebView - 获取html表单的查询参数