You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google JavaScript GSI SDK在无会话时获取ID Token?

解决Google JS SDK无会话时获取ID Token的问题

当用户无Google会话时,你不需要使用google.accounts.oauth2.initTokenClient(该方法主要用于获取Access Token),直接调用google.accounts.id.signIn()即可触发登录弹窗,登录成功后会自动进入你已配置好的callback,拿到ID Token,和一键登录的流程完全一致。

修改后的代码示例:

google.accounts.id.prompt(async notification => {
  if (notification.getNotDisplayedReason() === 'opt_out_or_no_session') {
    // 手动触发Google登录弹窗,登录成功后走initialize里的callback
    google.accounts.id.signIn();
  }
});

window.addEventListener('load', () => {
  google.accounts.id.initialize({
    client_id: googleClientId,
    callback: (user) => {
      const { credential: idToken } = user;
      // 在这里处理ID Token,无论是一键登录还是手动触发的登录都会进入此回调
    },
  });
});

补充说明

  • google.accounts.id.signIn()会唤起标准的Google登录界面,用户登录后返回的CredentialResponse里包含所需的ID Token,格式和一键登录的返回完全相同。
  • 若你一定要通过OAuth2流程获取ID Token,需采用授权码流程:
    1. 用google.accounts.oauth2.initCodeClient获取授权码
    2. 将授权码传给后端,由后端调用Google的token接口换取ID Token和Access Token
      但这种方式需要后端配合,不如直接用signIn()简洁。

内容的提问来源于stack exchange,提问作者Rob H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:50:16