3

Im пытается создать пользователя в Firebase, а затем создать профиль пользователя в базе данных на веб-сервере. Я внедрил следующий код, который создает пользователя довольно хорошо. Однако я не уверен, как получить идентификатор пользователя (который мне нужен для уникального идентификатора) для создания структуры базы данных. Есть ли способ вернуть объект пользователя при вызове createUserWithEmailAndPassword?Firebase Возвращаемый объект пользователя после создания учетной записи

Я попытался реализовать firebase.auth().onAuthStateChanged функцию, но я тогда получить ошибку таймаута

Если вы havn't собрали это для веб-приложения.

<script> 
function createUser() { 
var Result = "true"; 
var textUser = document.getElementById('userName').value; 
var textPassword = document.getElementById('userPassword').value; 
var textAccountID = document.getElementById('accountRef').value; 
var textDateCreated = document.getElementById('dateCreated').value; 
var textDisplayName = document.getElementById('displayName').value; 
var UID; 

firebase.auth().createUserWithEmailAndPassword(textUser, textPassword).catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
    return Result = "false"; 
    // ... 
}); 

writeUserData(UID, textDisplayName, textAccountID, textDateCreated); 

return Result; 

} 

function writeUserData(userId, displayName, accountID, dateCreated) { 
    firebase.database().ref('User/' + userId).set({ 
    userId:{ 
    AccountID: accountID, 
    Created: dateCreated, 
    Name: displayName} 
    }); 
} 


</script> 

ответ

12

Для того, чтобы получить идентификатор пользователя в стороне клиента, вы должны сделать это:

firebase.auth().createUserWithEmailAndPassword(textUser, textPassword) 
.then(function(user){ 
    console.log('uid',user.uid) 

    //Here if you want you can sign in the user 
}).catch(function(error) { 
    //Handle error 
}); 

, как описано здесь:

https://firebase.google.com/docs/reference/js/firebase.auth.Auth#createUserWithEmailAndPassword

Возвращает ненулевым firebase.Promise, содержащий ненулевые firebase.User

+0

Из документа, который вы указали: «При успешном создании учетной записи пользователя этот пользователь также будет подписан в ваше приложение». –

+0

Вы правы ... изменение, которое я не уловил из старой версии ... исправлено спасибо – Ymmanuel

+0

Да, это поведение полностью изменилось. Я все время его кусаю. –

1

Функция createUserWithEmailAndPassword() возвращает так называемое Promise, которое имеет методы catch() и then(). Вы уже используете catch() для решения проблем. Для того, чтобы справиться с «не-проблем», вам нужно использовать then():

firebase.auth().createUserWithEmailAndPassword(textUser, textPassword) 
.then(function(user) { 
    console.log(user); // see https://firebase.google.com/docs/reference/js/firebase.User 
}) 
.catch(function(error) { 
    // Handle Errors here. 
    var errorCode = error.code; 
    var errorMessage = error.message; 
    return Result = "false"; 
    // ... 
}); 

Смотрите справочную документацию для createUserWithEmailAndPassword и firebase.User.

+1

im, получивший ошибку с ошибкой auth/network-request-failed, реализующую вышеуказанное. Отладка предполагает, что обещание .then не называется – PowerMan2015

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