谷歌 gapi.auth2.getAuthInstance().isSignedIn().get() 当多个谷歌账户时总是假的

问题描述

我在使用 google gapi 身份验证时遇到了一个奇怪的问题。出于某种原因,gapi.auth2.getAuthInstance().isSignedIn().get() 的值总是返回 false。这是我的设置:

gapi.load("auth2",initAuth2);

initAuth2(){
    gapi.auth2.init({
      client_id: "xxxxx-yyyyy.apps.googleusercontent.com",hosted_domain: "domain.com",redirect_uri: "http://localhost:4200",ux_mode: "redirect",}).then(performAuth,error=>{
      console.error(`Error initiating gapi auth2: ${error.details}`);
    });
}

performAuth(googleAuth){
    const isSignedIn = googleAuth.isSignedIn.get();
    if(!isSignedIn){
      googleAuth.signIn();
      return;
    }
    const user = googleAuth.currentUser.get();
    console.log(user);
}

我有两个 google 工作区帐户登录同一个 chrome 配置文件。当我运行此脚本时,会提示我选择一个帐户。无论我选择哪一个,流程只是不断循环。原因是行 const isSignedIn = googleAuth.isSignedIn.get(); 总是返回 false。

到目前为止我尝试过的事情:

  1. 我认为可能是 client_id 已损坏,所以我生成了一个新的。相同的行为。
  2. 我认为 GCP 项目已损坏,因此我使用新凭据创建了一个新项目。相同的行为。
  3. 认为 cookie 有问题,所以我删除并清除了 cookie 和历史记录。相同的行为。
  4. 认为只与本地主机相关,所以我部署到网络。相同的行为。

如果我将初始化选项从 ux_mode: "redirect" 更改为 ux_mode: "prompt"。有用。然而,这不是想要的体验。另外,如果我在 chrome 配置文件中只有一个 google 工作区,它也可以工作。更有趣的是......如果我使用旧项目中的客户端ID......它可以工作!问题是同意屏幕显示了错误的应用名称。

我知道这个问题与 this one 类似,但我觉得它有所不同,因为上述故障排除均无效。有什么见解吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)