Я пытаюсь создать приложение с аутентификацией Firebase, хочу использовать электронную почту и пароль, а также войти в систему с помощью Google или Twitter. Когда пользователь регистрируется по электронной почте и паролю, он выбирает свое отображаемое имя, а я сохраняю его в базе данных, идентификаторе пользователя и отображаемом имени. Это работает, если пользователь хочет снова использовать ту же почту, он не может зарегистрироваться, потому что она находится в базе данных, и после успешного входа в систему я беру отображаемое имя на основе uid.
Теперь я хочу добавить регистрацию и войти в систему с помощью соц. нет отдельного метода для регистрации и входа в систему. Означает ли это, что каждый раз, когда пользователь регистрируется / входит в систему, я просто читаю данные, отображаю имя и проверяю, есть ли они в базе данных, добавляя, если нет, или не добавляя, если она существует? Нужно ли проверять, существует ли он, или просто попытаться снова добавить его в базу данных? Я планирую добавить некоторые другие пользовательские данные в БД, поэтому мне нужно, чтобы пользователь хранился в БД.
Я что-то упустил или? Неправильно ли вы понимаете поток авторизации в firebase?
РЕДАКТИРОВАТЬ: Что я делаю, когда пользователь входит в систему с социальной учетной записью, я проверяю, существуют ли данные или нет, и добавляю их. Однако кажется, что это медленнее, чем просто добавление данных, так что для многих пользователей эта проверка действительно займет много времени? Правильно ли добавлять эту проверку при каждом входе в систему?
ref.orderByChild("uid").equalTo(uid).addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (!dataSnapshot.exists()) {
//data doesnt exist, put it in DB
}else{
//data exist, do stuff
}
}override fun onCancelled(databaseError: DatabaseError) {
//gone wrong, log error...
}
})