【问题标题】:Firebase Google OAuth - Auth uid is different from the one returned by the callback for emails that have been previously deletedFirebase Google OAuth - 身份验证 uid 与之前已删除的电子邮件的回调返回的不同
【发布时间】:2017-02-05 15:11:27
【问题描述】:

我有一个简单的登录按钮,它调用以下代码:

var ref = new Firebase(<MY_FIREBASE_URL>);

ref.authWithOAuthPopup('google', function(error, authData) {
    if (error) {
        console.log('Login Failed!', error);
    } else {
        console.log('Authenticated successfully. ID:', authData.uid);
    }
}, {
    scope: 'email, profile'
});

对于新用户,它会在 Firebase 的 Auth 表中创建一个条目并为其分配一个 UID。此 UID 假定与回调中返回的 authData.uid 相同。但是,对于之前已从 Auth 表中删除的用户电子邮件,它们是不同的。基本上,ID 只匹配一次 - 对于从未存储在 Auth 表中的用户帐户。如果您将其从 Auth 中删除并重新执行身份验证流程,则 ID 将有所不同。

在我看来,这是 Firebase 实现唯一 ID 生成算法中的一个错误。有没有其他人遇到过这个问题?有什么解决方法吗?

我正在使用 Firebase SDK 2.4.2。

编辑:这无法使用 SDK 3 重现。

【问题讨论】:

  • 我想这就是为什么它是一个唯一 ID,在我看来这不是一个错误,它就像生成一个随机 JWT 令牌,为您的登录用户创建会话。 :) 也尝试迁移到最新的 firebase 3.x
  • 我认为这是一个错误的原因是这种唯一性只发生在一侧 - 身份验证表。在 authData.uid 中返回的 ID 始终相同。编辑:我会尝试升级到 3,但有一些事情阻止我这样做。目前我正试图在 SDK 3 上重现这一点。
  • 我在 2021 年的今天遇到了同样的问题:google 返回的 google 登录令牌与我的用户在 firebase 控制台上的不同。这不可能是设计使然,因为您无法通过 uid 识别该用户。
  • 对不起,我之前的评论是错误的:显然,如果使用您的一个 google 帐户登录过程失败并且您已经使用另一个帐户登录 google,您将在您的 firebase 应用程序上登录/注册使用错误的帐户。这绝对是一个错误.-.

标签: javascript angularjs firebase firebase-authentication angularfire


【解决方案1】:

我想我明白你在描述什么,如果是这样,那么我认为这是一个错误:

  1. 使用电子邮件a 创建用户A
  2. 从 Firebase 控制台中删除用户 A
  3. 使用电子邮件a 创建用户B
  4. authData.uid for BA 相同
  5. Firebase 控制台中 Buid 是其他随机字符串

您现在可以做的解决方法是通过 2.x SDK 而不是从 Firebase 控制台删除用户。

【讨论】:

  • 现在应该已修复。 2.X SDK 应正确反映身份验证控制台中显示的相同 UID。
猜你喜欢
  • 2016-11-10
  • 2018-02-10
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2018-09-17
  • 2016-11-12
  • 1970-01-01
相关资源
最近更新 更多