Catch up on everything we announced at this year's Firebase Summit. Learn more

Начните с аутентификации Firebase на Android

Подключите свое приложение к Firebase

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

Добавьте аутентификацию Firebase в свое приложение

Использование Firebase Android Банка Москвы , объявить зависимость для библиотеки Firebase аутентификации Android в вашем модуле (приложение уровня) Gradle файл (обычно app/build.gradle ).

Джава

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.1')

    // Declare 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 Банка Москвы , ваше приложение будет всегда использовать совместимые версии библиотек Firebase Android.

(Альтернативный) Объявляет Firebase библиотеки зависимостей без использования спецификации

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

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

dependencies {
    // Declare 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:21.0.1'
}

Котлин + KTX

dependencies {
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.1')

    // Declare 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-ktx'
}

С помощью Firebase Android Банка Москвы , ваше приложение будет всегда использовать совместимые версии библиотек Firebase Android.

(Альтернативный) Объявляет Firebase библиотеки зависимостей без использования спецификации

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

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

dependencies {
    // Declare 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-ktx:21.0.1'
}

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

(Необязательно) Прототип и тестирование с помощью Firebase Local Emulator Suite

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

Эмулятор аутентификации является частью Local Emulator Suite, который позволяет вашему приложению взаимодействовать с эмулируемым содержимым и конфигурацией базы данных, а также с дополнительными ресурсами вашего эмулируемого проекта (функциями, другими базами данных и правилами безопасности).

Использование эмулятора аутентификации включает всего несколько шагов:

  1. Добавление строки кода в тестовую конфигурацию вашего приложения для подключения к эмулятору.
  2. Из корня вашей локальной директории проекта, работает firebase emulators:start .
  3. Использование пользовательского интерфейса Local Emulator Suite для интерактивного прототипирования или REST API-интерфейса эмулятора аутентификации для неинтерактивного тестирования.

Подробное руководство доступно в Connect ваше приложение в эмуляторе аутентификации . Для получения дополнительной информации см введение Local Emulator люкс .

Теперь продолжим, как аутентифицировать пользователей.

Проверить текущее состояние авторизации

  1. Объявляет экземпляр FirebaseAuth .

    Джава

    private FirebaseAuth mAuth;

    Котлин + KTX

    private lateinit var auth: FirebaseAuth
  2. В onCreate() метод, инициализировать FirebaseAuth экземпляр.

    Джава

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Котлин + KTX

    // Initialize Firebase Auth
    auth = Firebase.auth
  3. При инициализации Activity проверьте, вошел ли пользователь в систему.

    Джава

    @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();
        }
    }

    Котлин + KTX

    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();
        }
    }

Зарегистрируйте новых пользователей

Создайте новый createAccount метод , который принимает в качестве адреса электронной почты и пароль, проверяет их, а затем создает новый пользователь с createUserWithEmailAndPassword методом.

Джава

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);
                }
            }
        });

Котлин + KTX

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)
            }
        }

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

Войти существующих пользователей

Создание нового signIn в signInWithEmailAndPassword signIn метод , который принимает в качестве адреса электронной почты и пароль, проверяет их, а затем подписывает пользователю с signInWithEmailAndPassword методом.

Джава

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);
                }
            }
        });

Котлин + KTX

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)
            }
        }

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

Доступ к информации о пользователе

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

Джава

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Котлин + KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

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

Изучите руководства по добавлению других служб идентификации и аутентификации: