Как подключить приложение к Firebase
Если вы ещё этого не сделали, добавьте Firebase в проект для Android.
Как добавить Firebase Authentication в приложение
В файле 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:35.0.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:25.0.0") }
Чтобы использовать поставщика аутентификации, включите его в консоли Firebase. Перейдите на страницу "Способ входа" в разделе Firebase Authentication, чтобы включить вход по адресу электронной почты и паролю, а также других поставщиков идентификационной информации, которые вы хотите использовать в приложении.
Создание прототипа и тестирование с помощью Firebase Local Emulator Suite (необязательно)
Прежде чем говорить о том, как ваше приложение аутентифицирует пользователей, давайте рассмотрим набор инструментов, которые можно использовать для создания прототипов и тестирования функций Authentication: Firebase Local Emulator Suite. Если вы выбираете методы аутентификации и поставщиков, тестируете разные модели данных с общедоступными и частными данными с помощью Authentication и Firebase Security Rules или создаете прототипы интерфейса входа, возможность работать локально без развертывания действующих сервисов может быть очень полезной.
Эмулятор Authentication входит в состав Local Emulator Suite, который позволяет приложению взаимодействовать с эмулируемым контентом и конфигурацией базы данных, а также, при необходимости, с эмулируемыми ресурсами проекта (функциями, другими базами данных и правилами безопасности).
Чтобы использовать эмулятор Authentication, выполните следующие действия:
- Добавление строки кода в конфигурацию тестирования приложения для подключения к эмулятору.
- Выполните команду
firebase emulators:startв корневом каталоге локального проекта. - Используйте интерфейс Local Emulator Suite для интерактивного создания прототипов или REST API эмулятора Authentication для неинтерактивного тестирования.
Подробную информацию можно найти в руководстве по подключению приложения к эмулятору Authentication. Подробнее о Local Emulator Suite…
Теперь давайте поговорим о том, как аутентифицировать пользователей.
Как проверить текущий статус аутентификации
Объявите экземпляр
FirebaseAuth.Kotlin
private lateinit var auth: FirebaseAuth
Java
private FirebaseAuth mAuth;
В методе
onCreate()инициализируйте экземплярFirebaseAuth.Kotlin
// Initialize Firebase Auth auth = Firebase.auth
Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
При инициализации действия проверьте, вошел ли пользователь в аккаунт.
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(); } }
Как зарегистрировать новых пользователей
Создайте новый метод createAccount, который принимает адрес электронной почты и пароль, проверяет их, а затем создает нового пользователя с помощью метода 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); } } });
Добавьте форму для регистрации новых пользователей с адресом электронной почты и паролем и вызовите этот новый метод при отправке формы. Пример можно найти в кратком руководстве.
Как войти в аккаунт существующему пользователю
Создайте новый метод signIn, который принимает адрес электронной почты и пароль, проверяет их, а затем выполняет вход пользователя с помощью метода 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); } } });
Добавьте форму для входа пользователей с помощью адреса электронной почты и пароля и вызовите этот новый метод при отправке формы. Пример можно найти в кратком руководстве.
Как получить доступ к информации о пользователе
Если пользователь успешно вошел в аккаунт, вы можете получить данные его аккаунта в любой момент с помощью метода getCurrentUser.
Kotlin
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = it.displayName val email = it.email val photoUrl = it.photoUrl // Check if user's email is verified val emailVerified = it.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. val uid = it.uid }
Java
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(); }
Дальнейшие действия
Ознакомьтесь с руководствами по добавлению других сервисов идентификации и аутентификации: