我正在使用Firebase(v3)Auth登录,我遇到了这个问题:
-
用户最初使用电子邮件和密码注册 .
-
退出 .
-
稍后,使用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帐户链接是通过首先使用他们当前的提供者/方法签署用户并且然后为新的身份验证方法/提供者请求凭证/获取令牌来完成的 . 在我的情况下,我不知道他们是否有其他身份验证提供程序,直到太晚(Firebase覆盖它) .
在Firebase覆盖现有帐户的详细信息并要求用户键入密码并链接帐户之前,是否有办法检测电子邮件?或者,更好的是,如果帐户已经与Google登录并且电子邮件地址匹配,则会自动关联帐户?
1 回答
我想到了 . Firebase的行为应该如此,这不是技术/编码问题 . 这更像是一个文档问题 .
当用户使用电子邮件和密码注册时,注销并使用其他方法(之前未使用过)登录,可能会发生以下两种情况:
要么
displayName
这样的用户详细信息不会自动更新 .