ios 应用浏览器和Webview Bypass中的Google OAuth

wqnecbli  于 2023-05-23  发布在  iOS
关注(0)|答案(1)|浏览(164)

我最近才知道Google Oauth is not allowed in webviews。这意味着,如果你有一个foo.com使用谷歌Oauth的应用程序www.example.com,你通过Instagram发送foo.com给用户。
该用户将无法登录,因为Instagram/Tiktok/Gmail和许多其他社交媒体网站使用其应用内浏览器打开链接。
我还学到了广告也可以使用应用内浏览器打开,这意味着点击广告的用户在尝试登录时基本上遇到了死胡同。
我一直在想办法:
1.让foo.com强制登录页面在原生浏览器中打开。我还没找到解决办法。
1.一些手动重定向到google oauth。
1.告诉用户他们的浏览器不受支持,他们必须手动打开它。(最不适合)
1.重新构建身份验证系统,使其具有本机用户名和密码。
下面是一个示例代码:

<html>
  <body>
      <script src="https://accounts.google.com/gsi/client" async defer></script>
      <script>
        function handleCredentialResponse(response) {
          console.log("Encoded JWT ID token: " + response.credential);
        }
        window.onload = function () {
          google.accounts.id.initialize({
            client_id: "YOUR_GOOGLE_CLIENT_ID",
            callback: handleCredentialResponse
          });
          google.accounts.id.renderButton(
            document.getElementById("buttonDiv"),
            { theme: "outline", size: "large" }  // customization attributes
          );
          google.accounts.id.prompt(); // also display the One Tap dialog
        }
    </script>
    <div id="buttonDiv"></div> 
  </body>
</html>
f0brbegy

f0brbegy1#

我发现了几个类似的问题,但没有一个有解决方案。
应用浏览器和Webview Bypass中的Google OAuth
Google OAuth 2.0 client ID authorization via embedded webview
我想我要做的是检测用户是否在webview中(在我的情况下,通过使用浏览器gem:https://github.com/fnando/browser)。然后,在Google SSO按钮所在的位置,我将显示某种消息,如We don't support signing in via embedded webviews. Please open this page in a browser.

相关问题