Хранение данных пользователя социальной аутентификации Firebase - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать приложение с аутентификацией 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...
            }
        })
...