Кашина_РМП_ЛБ16_4
.docxМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых» (ВлГУ)
Колледж инновационных технологий и предпринимательства
КАФЕДРА ФИЗИКИ И ПРИКЛАДНОЙ МАТЕМАТИКИ
Лабораторная работа № 16_4
по МДК 01.03 «Разработка мобильных приложений»
на тему: «Аутентификация пользователя с помощью Firebase в Android»
Выполнил
студент группы ИПсп-123
Кашина Д. А.
Принял
Красильщикова В.В.
Владимир, 2026 г.
Цель работы: получить практические навыки работы подключения к Firebase RealTime в Android Studio.
Ход работы:
Разметка activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:padding="16dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Выполнила: Кашина Д. ИПсп-123" android:textSize="18sp" android:textStyle="bold" android:gravity="center" android:layout_marginBottom="48dp" /> <Button android:id="@+id/register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Регистрация" android:layout_marginBottom="24dp" android:padding="12dp" android:minWidth="200dp" /> <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Вход" android:padding="12dp" android:minWidth="200dp" /> </LinearLayout>
activity_login.xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:padding="16dp"> <!-- Подпись о выполнившем работу --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Выполнила: Кашина Д. ИПсп-123" android:textSize="16sp" android:textStyle="bold" android:gravity="center" android:layout_marginBottom="32dp" android:layout_marginTop="16dp" /> <EditText android:id="@+id/email_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Почта" android:inputType="textEmailAddress" android:layout_marginBottom="16dp" android:padding="12dp" /> <EditText android:id="@+id/password_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Пароль" android:inputType="textPassword" android:layout_marginBottom="24dp" android:padding="12dp" /> <Button android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Вход" android:padding="12dp" /> </LinearLayout> </ScrollView>
activity_register.xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:padding="16dp"> <!-- Подпись о выполнившем работу --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Выполнила: Кашина Д. ИПсп-123" android:textSize="16sp" android:textStyle="bold" android:gravity="center" android:layout_marginBottom="32dp" android:layout_marginTop="16dp" /> <EditText android:id="@+id/email_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Email" android:inputType="textEmailAddress" android:layout_marginBottom="16dp" android:padding="12dp" /> <EditText android:id="@+id/password_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Пароль" android:inputType="textPassword" android:layout_marginBottom="16dp" android:padding="12dp" /> <EditText android:id="@+id/confirm_password_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Подтвердите пароль" android:inputType="textPassword" android:layout_marginBottom="24dp" android:padding="12dp" /> <Button android:id="@+id/register_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Зарегистрироваться" android:padding="12dp" /> </LinearLayout> </ScrollView>
Главный код MainActivity.java
package com.example.laba16_4; // Замените на ваш package import android.content.Intent; import android.os.Bundle; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button register = findViewById(R.id.register); Button login = findViewById(R.id.login); register.setOnClickListener(v -> startActivity(new Intent(MainActivity.this, RegisterActivity.class)) ); login.setOnClickListener(v -> startActivity(new Intent(MainActivity.this, LoginActivity.class)) ); } }
LoginActivity.java
package com.example.laba16_4; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.AuthResult; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; public class LoginActivity extends AppCompatActivity { private EditText emailTextView, passwordTextView; private Button button; private FirebaseAuth auth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); auth = FirebaseAuth.getInstance(); emailTextView = findViewById(R.id.email_edittext); passwordTextView = findViewById(R.id.password_edittext); button = findViewById(R.id.login_button); button.setOnClickListener(v -> loginUserAccount()); } private void loginUserAccount() { String email = emailTextView.getText().toString().trim(); String password = passwordTextView.getText().toString().trim(); if (email.isEmpty()) { Toast.makeText(this, "Введите email", Toast.LENGTH_LONG).show(); return; } if (password.isEmpty()) { Toast.makeText(this, "Введите пароль", Toast.LENGTH_LONG).show(); return; } auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Toast.makeText(LoginActivity.this, "Вход выполнен успешно!", Toast.LENGTH_LONG).show(); startActivity(new Intent(LoginActivity.this, MainActivity.class)); finish(); } else { String errorMessage = task.getException() != null ? task.getException().getMessage() : "Неизвестная ошибка"; Toast.makeText(LoginActivity.this, "Ошибка входа: " + errorMessage, Toast.LENGTH_LONG).show(); } } }); } }
RegisterActivity.java
package com.example.laba16_4; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; public class RegisterActivity extends AppCompatActivity { private EditText emailTextView, passwordTextView, confirmPasswordTextView; private Button button; private FirebaseAuth auth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); auth = FirebaseAuth.getInstance(); // Инициализация полей emailTextView = findViewById(R.id.email_edittext); passwordTextView = findViewById(R.id.password_edittext); confirmPasswordTextView = findViewById(R.id.confirm_password_edittext); // добавьте это поле в разметку button = findViewById(R.id.register_button); button.setOnClickListener(v -> registerNewUser()); } private void registerNewUser() { String email = emailTextView.getText().toString().trim(); String password = passwordTextView.getText().toString().trim(); String confirmPassword = confirmPasswordTextView.getText().toString().trim(); // Проверка на пустые поля if (email.isEmpty()) { Toast.makeText(this, "Введите email", Toast.LENGTH_LONG).show(); return; } if (password.isEmpty()) { Toast.makeText(this, "Введите пароль", Toast.LENGTH_LONG).show(); return; } // Проверка совпадения паролей if (!password.equals(confirmPassword)) { Toast.makeText(this, "Пароли не совпадают", Toast.LENGTH_LONG).show(); return; } // Проверка длины пароля if (password.length() < 6) { Toast.makeText(this, "Пароль должен быть не менее 6 символов", Toast.LENGTH_LONG).show(); return; } // Регистрация нового пользователя auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Toast.makeText(RegisterActivity.this, "Регистрация успешна!", Toast.LENGTH_LONG).show(); startActivity(new Intent(RegisterActivity.this, MainActivity.class)); finish(); } else { // Получаем подробную информацию об ошибке String errorMessage = task.getException() != null ? task.getException().getMessage() : "Неизвестная ошибка"; Toast.makeText(RegisterActivity.this, "Ошибка регистрации: " + errorMessage, Toast.LENGTH_LONG).show(); } } }); } }
Результат выполнения работы:
Вывод: в ходе лабораторной работы были получены практические навыки работы подключения к Firebase RealTime в Android Studio.
