Как проверить, когда пользователь прошел проверку подлинности телефона в Firebase? - PullRequest
1 голос
/ 15 апреля 2020

У меня есть приложение Android, в котором пользователи регистрируются в приложении под своим номером телефона, я использую Firebase для хранения в аутентификации их телефона и их электронной почты, а также сохраняю в базе данных реального времени их телефон, их полное имя и их адрес электронной почты. Структура в базе данных реального времени выглядит следующим образом:

Auto-Generated ID 
+16505553434: "some@email.com"  
email:"some@email.com"  
first name: "First name"  
last name: "Last name" 
phone: "+16505553434"

После того, как пользователь зарегистрировался и вышел из системы, когда он снова пытается использовать приложение, я хочу: если пользователь существует, я не хочу этого делать повторная аутентификация телефона, это должно произойти только один раз, когда они регистрируются, если пользователь существует в базе данных. Я хочу просто ввести его пароль и войти в систему. Но проблема в том, как я проверю, зарегистрирован ли пользователь телефона в Firebase. Если пользователь зарегистрирован, я хочу показать раскладку для ввода пароля, а если пользователь не зарегистрирован, я хочу показать OtpView, чтобы пользователь мог выполнить аутентификацию-регистрацию телефона. Когда пользователь вышел из FirebaseAuth.getInstance (). GetCurrentUser () имеет значение null, поэтому я не могу его использовать. Что я могу сделать, чтобы проверить, зарегистрирован ли пользователь или нет?

1 Ответ

1 голос
/ 16 апреля 2020

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

Когда пользователь проходит аутентификацию по номеру телефона, пароль не используется. Аутентификация производится с использованием кода подтверждения, отправленного с помощью SMS. Поэтому, если пользователь выходит из системы, он просто не может войти в систему, используя пароль. Он может войти снова, используя номер телефона или любого другого провайдера.

Но проблема в том, как я проверю, зарегистрирован ли пользователь телефона в Firebase. Если пользователь зарегистрирован, я хочу показать раскладку для ввода пароля, а если пользователь не зарегистрирован, я хочу показать OtpView, чтобы пользователь мог выполнить аутентификацию-регистрацию телефона.

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

db.child("users").orderByChild("phoneNumber").equalTo("+16505553434");

Если вы получите результат, это означает, что пользователи существуют. Чтобы позволить пользователю «войти в систему с паролем», вам необходимо включить этот вид аутентификации. Вы можете сделать это очень легко в консоли Firebase. Но имейте в виду, что это еще один тип аутентификации, который нельзя сочетать с первым. Проверьте документы относительно Аутентификация с Firebase, используя основанный на пароле . Таким образом, вы можете войти в систему с номером телефона или , указав адрес электронной почты и пароль. Вы не можете войти с помощью номера телефона и пароля.

Когда пользователь вышел из системы, FirebaseAuth.getInstance (). GetCurrentUser () имеет значение null, поэтому я не могу его использовать. Что я могу сделать, чтобы проверить, зарегистрирован ли пользователь или нет?

Когда пользователь выходит из системы, объект FirebaseUser имеет значение null. Нет способа получить данные из этого объекта. Все, что вы можете сделать, чтобы запросить базу данных.

...