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

Her*_*rno 6 authentication mobile webview ios google-signin

我有一个iOS App基本上使用WkWebView. 在移动网站中,用户可以使用 Google 帐户登录

由于谷歌不再允许 WebViews 使用谷歌登录,我如何登录我的用户?

我想到了两个解决方案:

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

    1. 拦截谷歌登录 URL 并使用一个Google Sign in SDK中继到 ,SFsafariViewController但只会给我一个用户令牌,我必须将其发送到我的网站并在服务器端验证用户。

有没有一种简单的方法来验证用户而不处理令牌?

Her*_*rno 2

我解决了。

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

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