Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

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

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

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

Ява

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

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

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

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

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

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:20.0.4'
}

Котлин + KTX

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

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

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

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

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

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:20.0.4'
}

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

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

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

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

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

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

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

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

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

  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 метода 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 пользователя с signInWithEmailAndPassword метода 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 в систему, вы можете получить данные его учетной записи в любой момент с getCurrentUser метода 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
}

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

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