Аутентификация в Firebase с использованием учетных записей на основе пароля на Android

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

Для использования ИИ-помощи скопируйте приведенную ниже подсказку в свой агент программирования с поддержкой ИИ (например, Gemini в Android Studio, Antigravity , Claude Code, Codex и Cursor). Вы можете настроить подсказку и взаимодействовать с агентом. Подробную информацию об установке см. в разделе «Навыки агентов Firebase» .

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase Authentication with email and password authentication in my app.

Прежде чем начать

  1. Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .

  2. Если вы еще не подключили свое приложение к проекту Firebase, сделайте это через консоль Firebase .
  3. Включите использование электронной почты и пароля в качестве способа авторизации для вашего проекта Firebase:
    1. В консоли Firebase перейдите в раздел Безопасность > Аутентификация .
    2. На вкладке «Способ входа» включите способ входа по электронной почте/паролю .
    3. Нажмите « Сохранить ».
  4. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость от библиотеки Firebase Authentication для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотек.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.19.0"))
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-auth")
    }

    Использование Firebase Android BoM , что ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернативный вариант) Добавление зависимостей библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вам необходимо указать версию каждой библиотеки Firebase в строке зависимости.

    Обратите внимание, что если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-auth:24.2.0")
    }

Создайте учетную запись на основе пароля.

Чтобы создать новую учетную запись пользователя с паролем, выполните следующие действия в процессе входа в приложение:

  1. В методе onCreate вашего действия регистрации получите общий экземпляр объекта FirebaseAuth :

    Kotlin

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. При инициализации Activity проверьте, вошел ли пользователь в систему:

    Kotlin

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }
  3. Когда новый пользователь регистрируется через форму регистрации вашего приложения, выполните все необходимые шаги проверки учетной записи, например, убедитесь, что пароль новой учетной записи введен правильно и соответствует вашим требованиям к сложности.
  4. Создайте новую учетную запись, передав адрес электронной почты и пароль нового пользователя в функцию createUserWithEmailAndPassword :

    Kotlin

    auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "createUserWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "createUserWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    Если была создана новая учетная запись, пользователь также авторизуется. В функции обратного вызова можно использовать метод getCurrentUser для получения данных учетной записи пользователя.

Войдите в систему, используя адрес электронной почты и пароль.

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

  1. В методе onCreate вашего действия авторизации получите общий экземпляр объекта FirebaseAuth :

    Kotlin

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. При инициализации Activity проверьте, вошел ли пользователь в систему:

    Kotlin

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if (currentUser != null) {
            reload()
        }
    }

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if(currentUser != null){
            reload();
        }
    }
  3. Когда пользователь входит в ваше приложение, передайте адрес электронной почты и пароль пользователя в функцию signInWithEmailAndPassword :

    Kotlin

    auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(
                    baseContext,
                    "Authentication failed.",
                    Toast.LENGTH_SHORT,
                ).show()
                updateUI(null)
            }
        }

    Java

    mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithEmail:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithEmail:failure", task.getException());
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });
    Если вход в систему прошел успешно, вы можете использовать возвращенный FirebaseUser для продолжения.

Рекомендуется: Настройте политику паролей.

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

Чтобы настроить политику паролей для вашего проекта, откройте раздел «Политика паролей» на вкладке «Безопасность» > «Аутентификация» > «Настройки» в консоли Firebase :

Настройки аутентификации

Политики паролей Firebase Authentication поддерживают следующие требования к паролям:

  • Требуется символ нижнего регистра

  • Требуется заглавная буква

  • Требуется числовой символ

  • Требуется небуквенно-цифровой символ.

    Следующие символы удовлетворяют требованию к небуквенно-цифровым символам: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~

  • Минимальная длина пароля (от 6 до 30 символов; по умолчанию — 6).

  • Максимальная длина пароля (4096 символов)

Вы можете включить принудительное применение политики паролей в двух режимах:

  • Требование : Попытки регистрации завершаются неудачей, пока пользователь не обновит свой пароль, используя пароль, соответствующий вашей политике.

  • Уведомление : Пользователям разрешается регистрироваться с не соответствующим требованиям паролем. При использовании этого режима следует проверить, соответствует ли пароль пользователя политике на стороне клиента, и каким-либо образом предложить пользователю обновить пароль, если он не соответствует требованиям.

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

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

Рекомендуется: включить защиту от перечисления адресов электронной почты.

Some Firebase Authentication methods that take email addresses as parameters throw specific errors if the email address is unregistered when it must be registered (for example, when signing in with an email address and password), or registered when it must be unused (for example, when changing a user's email address). While this can be helpful for suggesting specific remedies to users, it can also be abused by malicious actors to discover the email addresses registered by your users.

Чтобы снизить этот риск, мы рекомендуем убедиться, что для вашего проекта включена защита от перечисления адресов электронной почты . Проверить эту настройку можно в консоли Firebase : перейдите в раздел Безопасность > Аутентификация > вкладка Настройки , а затем нажмите Действия пользователя .

Обратите внимание, что включение этой функции изменяет поведение системы отчетов об ошибках для Firebase Authentication , поэтому убедитесь, что ваше приложение не зависит от более специфических ошибок.

Следующие шаги

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

  • В ваших приложениях вы можете получить основную информацию профиля пользователя из объекта FirebaseUser . См. раздел «Управление пользователями» .

  • В правилах безопасности Firebase Realtime Database и Cloud Storage вы можете получить уникальный идентификатор пользователя, вошедшего в систему, из переменной auth и использовать его для управления доступом пользователя к данным.

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

Для выхода из системы пользователя вызовите signOut :

Kotlin

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();