微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Auth Flow,在同一客户端/系统上维护多个应用程序用户登录 应用流程场景我的方法

如何解决Google Auth Flow,在同一客户端/系统上维护多个应用程序用户登录 应用流程场景我的方法

应用流程

登录表格位于 xyz.com。登录后,用户将被重定向到 subdomain1.xyz.com。对于 Google 授权,用户转到 subdomain1.xyz.com/profile 并使用 Google 登录

场景

我使用用户 A 登录到我的系统,我还向用户 A 授权了 Google。因此,如果我注销并使用同一用户再次登录,则不需要谷歌授权。但是如果在我从用户 A 注销后使用用户 B 登录,那么即使我没有授权他,Google Api 仍然显示用户 B 已登录

我的方法

为此,我将 last_login_id 保存在 cookie 中

export function* loggedInUserFetched(action) {
  if (window.gapi && cookies.load("last_user_id") != action.payload?.id) {
    window.gapi.load("client:auth2",() => {
      window.gapi.auth2
        .init({
          apiKey: GoogleKeys.API_KEY,clientId: GoogleKeys.CLIENT_ID,redirectUri: "",scope: GoogleKeys.ScopES,})
        .then((r) => {
          const googleAuth = window.gapi.auth2.getAuthInstance();
          if (googleAuth) googleAuth.signOut().catch((e) => console.error(e));
        });
    });
  }
  cookies.save("last_user_id",action.payload?.id,{
    domain: homeUrl,path: "/",});
  yield put({ type: SET_USER,payload: action.payload });
}

并将其与新登录用户 ID 进行比较,如果它们不匹配,我将退出谷歌。但我的方法的问题是,有时是注销,有时不是。

谷歌在不同用户之间持久授权,这意味着用户 A id 应该在登录前附加到谷歌(但不知道如何)

所以也许我做错了,我需要一个更好的方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?