Я использую веб-аутентификацию firebase для входа пользователей на свой веб-сайт, что отлично работает, но я хочу иметь возможность отображать имя пользователя, вошедшего в систему. Как мне это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Когда пользователь регистрируется, он будет записан с некоторыми базовыми полями (адрес электронной почты, уникальный идентификатор и т. д.) В базу данных аутентификации Firebase (к которой у вас есть доступ, но у вас нет полного контроля над ней, поскольку она контролируется Firebase Auth. система).
Как только ваш новый пользователь будет создан, вы получите объект UserCredential с базовой информацией о вашем пользователе. Используйте поле uniqueID (UserCredential.user.uid), чтобы записать данные пользователя с любым количеством полей (имя пользователя, адрес электронной почты, полное имя, адрес, настройки и т. д.) В свою базу данных Firebase (БД реального времени или облачный Firestore). Я думаю, что это хорошая практика - хранить в документе с уникальным идентификатором, созданным системой Auth.
Как только вы это сделаете и пользователи войдут в систему позже, вы получите еще один объект userCredential, содержащий уникальный идентификатор этого пользователя.
Вы будете использовать этот уникальный идентификатор для доступа к своей базе данных, в которой вы сохранили данные своих пользователей, и вы сможете получить все данные, которые захотите.
См. Код ниже (я использую React): после успешной регистрации мы получаем объект UserCredential, который мы можем использовать для чтения только что созданного uniqueId uid и использовать его для создания документа в нашей базе данных с этим тот же идентификатор. Мы можем добавить столько полей, сколько захотим. В этом случае я добавил имя пользователя (которое я получаю из своей формы регистрации) и адрес электронной почты (который я получаю непосредственно из объекта UserCredential).
Создать пользователя с паролем и электронной почтой
handleSubmit(event){
event.preventDefault();
const { email, passwordOne} = this.state;
// SIGN UP FUNCTION
this.props.firebase.auth.createUserWithEmailAndPassword(email, passwordOne)
// SAVING USER DETAILS TO MY DATABASE
.then((UserCredential) => {
const username = this.state.username;
this.props.firebase.db.collection('users').doc(UserCredential.user.uid)
.set({
username: username,
email: UserCredential.user.email
})
.then( () => {
this.setState({ ...INITIAL_STATE });
this.props.history.push('/');
}
)
.catch(error => {
this.setState({ error });
}
);
}
)
.catch(error => {
this.setState({ error });
}
);
}