单击关闭按钮后不显示 Google 一键登录 UI

Yav*_*alı 14 javascript asp.net-mvc google-authentication oauth-2.0 google-signin

我正在尝试按照本指南使新的谷歌一键登录工作:

https://developers.google.com/identity/one-tap/web

google.accounts.id.initialize({
            client_id: '123123123123123123.apps.googleusercontent.com',
            cancel_on_tap_outside: false,
            callback: handleCredentialResponse
        });

        //google.accounts.id.prompt(true);

        google.accounts.id.prompt((notification) => {
            if (notification.isNotDisplayed() || notification.isSkippedMoment()) {

                // continue with another identity provider.
            }
    });
Run Code Online (Sandbox Code Playgroud)

我正在使用 One Tap JavaScript API 来显示 One Tap。它完美地完成了它需要做的事情。

客户端验证一切正常,但我有一个问题。通过单击窗口右上角的关闭按钮关闭 UI 后,UI 不再显示,当我检查通知状态时,它显示此错误;

选择退出或无会话

即使用户关闭了 UI,我需要做什么才能保持 UI 显示?我很感激任何帮助。

小智 19

google.accounts.id.prompt((notification) => {
            if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
                document.cookie =  `g_state=;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT`;
                google.accounts.id.prompt()
            }
        });
Run Code Online (Sandbox Code Playgroud)

这对我删除 cookie 并重试很有用


Dr *_*Nic 18

在开发过程中,我能够通过删除g_statecookie 来重置指数冷却。

一种方法可能是添加仅供开发使用的“清除 Google One Tap Cookie”链接,该链接运行服务器端操作以删除 Cookie g_state,然后重定向回上一页。

  • 由于 g_state cookie 没有 HttpOnly 标志,您应该能够在浏览器中使用 javascript 将其删除。 (2认同)
  • 我认为这不再准确。g_state cookie 不再存在,我不知道如何在开发过程中关闭冷却时间 (2认同)

Gui*_*bin 6

这就是所谓的“指数冷却”功能。更多详细信息,请访问https://developers.google.com/identity/one-tap/web/guides/features#exponential_cool_down

Google One Tap 是一种优化的用户体验,让用户只需轻轻一按即可登录或注册。如果用户不想登录/注册(通过关闭一键),则不应在每个页面重新加载或导航时一次又一次显示。对于大多数用户来说,这是一种烦人的用户体验。借助冷静功能,用户不会感到被迫登录/注册。

  • 好的,但是如果我仍处于开发过程中,UI 显示一次,我点击了外部,仅此而已,在它再次显示之前我无法执行任何操作。 (4认同)
  • 由于某种原因,它在隐身模式下对我不起作用,但我发现,如果我清除了开发站点的 cookie,冷却时间就会重置,不确定这是否是解释/执行此操作的正确方法,但嘿,它有效。 (2认同)