【发布时间】: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