gpt4 book ai didi

javascript - 使用新提供商 (Google) 登录的 Firebase 会删除以前的提供商(密码)

转载 作者:数据小太阳 更新时间:2023-10-29 04:14:34 24 4
gpt4 key购买 nike

我在使用 Firebase (v3) Auth 登录时遇到了这个问题:

  1. 用户最初使用电子邮件和密码注册。
  2. 注销。
  3. 稍后,使用 Google 登录。

我预计会出现错误,提示电子邮件地址用于其他帐户,然后要求用户输入密码以链接帐户,但 Firebase 会静默删除电子邮件/密码登录方法并返回成功消息。

Google 验证代码:

var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider).then(
result => {
console.log("federated (google) result", result);
},
error => {
console.log("federated (google) error", error);
}
);

使用电子邮件和密码进行身份验证的代码:

// Login:
firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then(
ok => {
console.log("email/pass sign in success", ok);
},
error => {
console.log("email/pass sign in error", error);
}
)

// Register:
firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password).then(
ok => {
console.log("Register OK", ok);
},
error => {
console.log("Register error", error);
}
)

我看到 in the guide该帐户链接是通过首先使用他们当前的提供者/方法登录用户,然后才为新的身份验证方法/提供者请求凭据/获取 token 来完成的。就我而言,我不知道他们是否有其他身份验证提供程序,直到为时已晚(Firebase 将其覆盖)。

在 Firebase 覆盖现有帐户的详细信息并要求用户输入密码并链接帐户之前,是否有一种方法可以检测到电子邮件已被占用?或者,更好的是,如果帐户已登录 Google 且电子邮件地址匹配,则自动链接这些帐户?

最佳答案

我想通了。 Firebase 正常运行,这不是技术/编码问题。这更像是一个文档问题。

当用户使用电子邮件和密码注册、注销并使用其他方法(以前未使用过)登录时,可能会发生两件事:

  1. 如果电子邮件得到确认,当您使用新提供商登录时,电子邮件/密码凭据会被记住(我的问题中期望的结果)。

  1. 如果电子邮件未经确认,则会更新用户,以便删除电子邮件/密码凭据并保留新的登录方法。 displayName 等用户详细信息不会自动更新。

关于javascript - 使用新提供商 (Google) 登录的 Firebase 会删除以前的提供商(密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37396194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com