首页  >  问答  >  正文

Google 一键登录上的无限重定向循环

我无法找到有关 Google One Tap UX 以及如何在登录重定向后保留登录状态的任何文档。我正在使用 html api,请在此处查看代码:

setTimeout(function () {
    let target = document.getElementById('google-signin');
    target.innerHTML = '<div id="g_id_onload" data-client_id="x" data-context="signin" data-login_uri="https://x/account/google/callback" data-auto_select="true" data-itp_support="true"></div>';
    var s = document.createElement("script");
        s.src = 'https://accounts.google.com/gsi/client';
        
        document.head.appendChild(s);
        
        console.log('appended script', s);
    }, 30000);
</script>

本质上,我将这个登录弹出窗口延迟了 30 秒,该部分工作正常,但不久之后就会发生这种情况:

  1. 登录发生
  2. 发生重定向
  3. 服务器重定向回引用页面
  4. 30 秒后,该过程再次开始

我本以为 google sdk 会在某个地方设置 cookie 或其他东西,但我想它不会,或者我应该通过自己的方式处理持久登录状态。我只是想知道这里的正确方法。

我的问题是:Google 如何知道用户是否已使用 Google One Tap UX 登录?

P粉463840170P粉463840170203 天前423

全部回复(1)我来回复

  • P粉115840076

    P粉1158400762024-03-30 00:31:08

    想出了一个解决办法。 Google 允许您在 div 标签上放置一个名为 data-skip_prompt_cookie="yourcookie" 如果该 cookie 具有真实值,这将跳过一键提示

    我所做的是在 asp.net 中的服务器回调中,我向响应添加了一个 cookie。这可确保只有在有人实际登录后才会禁用提示。

    Response.Cookies.Append(
                "yourcookie", "true");

    这可以确保当我的服务器重定向回原始页面时,cookie 存在并且一键点击不会再次出现

    回复
    0
  • 取消回复