Регистрация пользователей в Firebase: Android разработка

Этот урок описывает создание окна регистрации и добавление пользователя в базу данных Firebase.

Подготовка MainActivity

В файле MainActivity создадим переменные для ссылок на кнопки «Войти» и «Зарегистрироваться». Убедитесь, что в XML-разметке android:id кнопки «Зарегистрироваться» имеет корректное значение, например, btn_register.

Добавим следующий код:

Button btn_signIn = findViewById(R.id.btn_signIn);
Button btn_register = findViewById(R.id.btn_register);

Эти переменные будут содержать ссылки на соответствующие кнопки.

Подключение к Firebase

Подключим базу данных Firebase:

FirebaseApp firebaseApp = FirebaseApp.getInstance();
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference users = db.getReference("users");

firebaseApp инициализирует Firebase, db устанавливает соединение с базой данных, а users — это ссылка на таблицу «users». Методы getInstance() инициализируют Firebase и подключаются к базе данных.

Обработчик события для кнопки «Зарегистрироваться»

Создадим обработчик события для кнопки «Зарегистрироваться»:

btn_register.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        showRegisterWindow();
    }
});

Этот код вызовет функцию showRegisterWindow(), которая описана ниже.

Всплывающее окно регистрации (showRegisterWindow())

Функция showRegisterWindow() создаёт всплывающее окно регистрации с помощью AlertDialog.Builder:

private void showRegisterWindow() {
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("Зарегистрироваться");
    dialog.setMessage("Введите данные для регистрации");

    LayoutInflater inflater = LayoutInflater.from(this);
    View registerWindow = inflater.inflate(R.layout.register_window, null);
    dialog.setView(registerWindow);

    // Получение данных из полей ввода
    final MaterialEditText email = registerWindow.findViewById(R.id.email_field);
    final MaterialEditText password = registerWindow.findViewById(R.id.password_field);
    final MaterialEditText name = registerWindow.findViewById(R.id.name_field);
    final MaterialEditText phone = registerWindow.findViewById(R.id.phone_field);


    dialog.setNegativeButton("Отменить", (dialogInterface, i) -> dialogInterface.dismiss());

    dialog.setPositiveButton("Добавить", (dialogInterface, i) -> {
        //Обработка данных и регистрация пользователя
    });

    dialog.show();
}

register_window.xml — это layout-файл, содержащий поля ввода для email, пароля, имени и телефона.

Валидация данных

Добавим валидацию данных перед регистрацией:

final String emailText = email.getText().toString();
final String passwordText = password.getText().toString();
final String nameText = name.getText().toString();
final String phoneText = phone.getText().toString();

if (TextUtils.isEmpty(emailText)) {
    Snackbar.make(root, "Введите вашу почту", Snackbar.LENGTH_LONG).show();
    return;
}
// Аналогичная проверка для password, name, phone
if (passwordText.length() < 5) {
    Snackbar.make(root, "Пароль должен быть длиннее 5 символов", Snackbar.LENGTH_LONG).show();
    return;
}
// ...  (проверка для name и phone) ...


//  Регистрация пользователя (после успешной валидации)

root — это View (например, RelativeLayout), которому задан android_id="@+id/root" в activity_main.xml.

Регистрация пользователя в Firebase

После валидации данных, регистрируем пользователя:

firebaseApp.createUserWithEmailAndPassword(emailText, passwordText)
    .addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            //Создание объекта User и сохранение в базу данных
            User user = new User(nameText, emailText, passwordText, phoneText);
            users.child(emailText).setValue(user)
                .addOnSuccessListener(aVoid -> {
                    Snackbar.make(root, "Пользователь добавлен!", Snackbar.LENGTH_SHORT).show();
                    dialogInterface.dismiss();
                });
        }
        //Обработка ошибок
    });

Класс User должен быть определен отдельно и содержать поля name, email, password, phone.

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

Что будем искать? Например,программа