3

我正在关注此文档谷歌一键登录以在我的反应应用程序中实现谷歌一键登录。

我已将以下代码添加到我的组件 JSX 中,并开始让谷歌提示登录:

  const handleCredentialResponse = response => {
    console.log('response', response);
  };

return (
    <Fragment>
      <div
        id="g_id_onload"
        data-auto_select = 'false'
        data-client_id={clientId}
        data-callback={(e) => handleCredentialResponse(e)}>
      </div>
    </Fragment>
  );

我面临的问题是回调函数没有触发。在寻找解决方案后,我偶然发现了这个SO question。OP 提出了类似的问题,并使用 javascript API 语法向谷歌显示一键而不是 HTML 代码要遵循上述问题,我阅读了此文档Use the One Tap JavaScript API。但我无法理解变量 google 来自哪里?

示例代码:

window.onload = function () {
    google.accounts.id.initialize({
      client_id: 'YOUR_GOOGLE_CLIENT_ID',
      callback: handleCredentialResponse
    });
    google.accounts.id.prompt();
  }

如果有人能告诉我这可能会解决我的回调函数未触发的问题。谢谢!

4

1 回答 1

2

我在 Nilesh Patel 和这个包react-google-one-tap-login发表的评论的帮助下找到了一个解决方案。

检查上面包中的源代码,我设法发现我必须

代替:

 google.accounts.id.initialize({
    client_id: CLIENT_ID,
    callback: data => handleCredentialResponse(data),
    state_cookie_domain: 'https://example.com',
  });

 window.google.accounts.id.initialize({
    client_id: CLIENT_ID,
    callback: data => handleCredentialResponse(data),
    state_cookie_domain: 'https://example.com',
  });
于 2020-12-31T13:21:00.980 回答