使用 google one-tap javascript API 时如何定义变量 google

Har*_*mer 6 javascript reactjs google-signin google-identity google-one-tap

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

我已将以下代码添加到我的组件 JSX 中,并且开始出现 google 提示登录:

  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>
  );
Run Code Online (Sandbox Code Playgroud)

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

示例代码:

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

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

Har*_*mer 6

我在 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',
  });
Run Code Online (Sandbox Code Playgroud)

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