Подключите свое приложение к 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:33.2.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.
Ищете библиотечный модуль, специфичный для Kotlin? Начиная с октября 2023 года ( Firebase BoM 32.5.0) от основного модуля библиотеки могут зависеть как разработчики Kotlin, так и Java (подробнее см. FAQ по этой инициативе ).(Альтернатива) Добавить зависимости библиотеки 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:23.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+KTX
private lateinit var auth: FirebaseAuth
Java
private FirebaseAuth mAuth;
В методе
onCreate()
инициализируйте экземплярFirebaseAuth
.Kotlin+KTX
// Initialize Firebase Auth auth = Firebase.auth
Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
При инициализации вашей активности проверьте, вошел ли пользователь в систему.
Kotlin+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() } }
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+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) } }
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+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) } }
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+KTX
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(); }
Следующие шаги
Ознакомьтесь с руководствами по добавлению других служб идентификации и аутентификации: