2016-12-16 2 views
0

Я использую набор учетных записей и вам необходимо сохранить номер@app.com на firebase. Поэтому я старался использовать их электронную почту и поток паролей. Но проблема, которую я обнаружил, заключается в том, что у них есть два разных потока: один для создания пользователя, который инициируется во время register-createUserWithEmailAndPassword и других в потоке входа, которые необходимо инициировать во время входа в систему, когда пользователь уже создан -signInUserWithEmailAndPassword.Тот же поток для входа и регистрации: Firebase Auth

Есть ли что-то вроде того же вызова для создания и входа в систему, который может понять, является ли он первым пользователем, поэтому создайте его или существующего пользователя.

У меня может быть проверка сервера на моем конце, но это приводит к задержке и множественному звонку в другую систему.

+0

Вызов 'createUserWithEmailAndPassword' будет подписываться на этого пользователя, если он создан и сбой, если пользователь с этим адресом электронной почты уже существует. –

ответ

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 и т. Д.), То гарантируется, что пользователь уже зарегистрировался с помощью электронной почты и пароля. В этом случае вы можете войти в систему. Если список пуст, пользователь не существует, и вы можете создать нового пользователя.

Ответит ли это на ваш вопрос?

Смежные вопросы