Firebase Google OAuth - Auth uid不同于先前已删除的电子邮件的回调返回的uid

Firebase Google OAuth - Auth uid is different from the one returned by the callback for emails that have been previously deleted

本文关键字:uid 删除 电子邮件 返回 回调 OAuth Google Auth 不同于 Firebase      更新时间:2023-09-26

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

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无法重现

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

  1. 创建用户A,邮箱地址为a
  2. 从Firebase控制台删除用户A
  3. 创建用户B,邮箱地址为a
  4. authData.uid对于BA相同
  5. 在Firebase控制台中Buid是其他一些随机字符串

你现在可以做的是通过2。