Firebase Auth Login не показывает зарегистрированное имя пользователя

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
318
1

Ответы 1

Когда пользователь регистрируется, он будет записан с некоторыми базовыми полями (адрес электронной почты, уникальный идентификатор и т. д.) В базу данных аутентификации Firebase (к которой у вас есть доступ, но у вас нет полного контроля над ней, поскольку она контролируется Firebase Auth. система).

Как только ваш новый пользователь будет создан, вы получите объект UserCredential с базовой информацией о вашем пользователе. Используйте поле uniqueID (UserCredential.user.uid), чтобы записать данные пользователя с любым количеством полей (имя пользователя, адрес электронной почты, полное имя, адрес, настройки и т. д.) В свою базу данных Firebase (БД реального времени или облачный Firestore). Я думаю, что это хорошая практика - хранить в документе с уникальным идентификатором, созданным системой Auth.

Как только вы это сделаете и пользователи войдут в систему позже, вы получите еще один объект userCredential, содержащий уникальный идентификатор этого пользователя.

Вы будете использовать этот уникальный идентификатор для доступа к своей базе данных, в которой вы сохранили данные своих пользователей, и вы сможете получить все данные, которые захотите.

См. Код ниже (я использую React): после успешной регистрации мы получаем объект UserCredential, который мы можем использовать для чтения только что созданного uniqueId uid и использовать его для создания документа в нашей базе данных с этим тот же идентификатор. Мы можем добавить столько полей, сколько захотим. В этом случае я добавил имя пользователя (которое я получаю из своей формы регистрации) и адрес электронной почты (который я получаю непосредственно из объекта UserCredential).

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 });
      }
    );
  }

Другие вопросы по теме