我正在使用帐户套件,需要将number@app.com存储在firebase上。所以我尝试用他们的电子邮件和密码流程。 但我发现它们的问题是它们有两个不同的流程:一个用于创建用户,该用户在注册时创建 - createUserWithEmailAndPassword,另一个在登录流程中启动,需要在用户已经登录时启动创建了-signInUserWithEmailAndPassword。
是否存在类似创建和登录呼叫的内容,可以确定它是否是第一次使用者,因此创建它或现有用户。
我可以在我的终端进行服务器检查,但它会带来延迟和对不同系统的多次调用。
答案 0 :(得分:0)
您可以执行以下操作:
firebase.auth().fetchProvidersForEmail(email)
.then(function(providers) {
if (providers.length > 0 ) {
// The user has already been registered. Careful though: the
// following assumes that your users only sign up with email
// and password. If they can sign up with other providers
// (Google, Facebook...), you may not be able to do the next
// call.
return firebase.auth().signInWithEmailAndPassword(
email, password);
} else {
// No account exists with this email address.
return firebase.auth().createUserWithEmailAndPassword(
email, password);
}).then(function(user) {
// User is signed in!
});
这将首先检查链接到该电子邮件地址的提供商。如果列表不为空,并且您的用户只能使用电子邮件和密码注册(因此没有Google登录,Facebook登录等),那么可以保证用户已经注册了电子邮件和密码。在这种情况下,您可以登录用户。如果列表为空,则不存在用户,您可以创建新用户。
这会回答你的问题吗?
答案 1 :(得分:0)
您可以创建一个新帐户并验证是否已使用电子邮件,然后登录。
const auth = firebase.auth();
auth.createUserWithEmailAndPassword(email, password).then(cred => {
}).catch(err => {
if(err.code === 'auth/email-already-in-use') {
auth.signInWithEmailAndPassword(email, password).then(cred => {
console.log(cred);
}).catch(err => {
console.log(err.message);
})
} else {
console.log(err.message);
};
});