Аутентифицировать пользователей с помощью библиотеки FirebaseAuth
В разработке под Android очень быстро внедряется Kotlin, поэтому в этой статье мы собираемся реализовать аутентификацию Firebase через Kotlin. Чтобы добавить библиотеку Firebase Auth с поддержкой ktx, добавьте следующую строку под тегом dependencies на уровне модуля файла build.gradle
:
implementation 'com.google.firebase:firebase-auth-ktx:19.3.1'
Регистрация и вход с помощью электронной почты и пароля
Когда вы думаете об аутентификации, электронная почта / пароль - один из широко используемых методов. Firebase поддерживает этот метод. Во-первых, давайте посмотрим, как зарегистрировать нового пользователя. Затем мы увидим, как реализовать логин для существующих пользователей.
Нам нужно включить метод входа по электронной почте / паролю в консоли Firebase на вкладке «Аутентификация». Как только вы закончите с этим, мы можем приступить к программированию.
Подписаться
Зарегистрироваться так же просто, как создать новую учетную запись для пользователя в консоли Firebase. Для этого нам нужно создать экземпляр FirebaseAuth
, как показано ниже:
Используя экземпляр FirebaseAuth
, мы можем создать новую учетную запись для пользователя, вызвав функцию createUserWithEmailAndPassword
. Эта функция принимает в качестве параметра адрес электронной почты и пароль.
По умолчанию эта функция позволит избежать дублирования учетных записей, проверки пароля / адреса электронной почты и будет поддерживать стандартную надежность пароля. Мы можем добавить прослушиватель обратного вызова, который возвращает объект задачи с подробной информацией о запросе. Если запрос выполнен успешно, мы можем получить доступ к информации о текущем пользователе, вызвав currentUser
в экземпляре FirebaseAuth
, как показано ниже:
Войти
Теперь, когда мы знаем, как создать нового пользователя в Firebase с помощью метода электронной почты / пароля, давайте посмотрим, как реализовать вход для существующих пользователей.
Подобно функции createUserWithEmailAndPassword
для создания нового пользователя, у нас есть signInWithEmailAndPassword
для реализации входа в систему для существующих пользователей. Мы можем добавить обратный вызов и получить детали в объекте задачи, как мы реализовали во время регистрации. Взгляните на реализацию входа в систему:
Информация о текущем пользователе
Теперь, когда мы знаем, как создать учетную запись в Firebase и войти в систему под существующим пользователем, пришло время получить информацию о пользователе. С Firebase нам больше не нужно сохранять данные о пользователе в настройках. Вместо этого мы можем получить к ним доступ прямо из экземпляра FirebaseAuth
.
После того, как вы войдете в систему или зарегистрируетесь с помощью FirebaseAuth
, в нем будут сохранены данные пользователя. Таким образом, мы можем получить к ним доступ, даже если приложение перезапустится. Мы можем очистить пользователя, вызвав функцию signOut
в экземпляре FirebaseAuth
, как показано ниже:
Firebase.auth.signOut()
Использование социальных сайтов с Firebase
Использование социальных сайтов, таких как Google или Facebook, для аутентификации пользователей снизит трения с клиентами, находящимися на борту. Здесь мы узнаем, как использовать Google и Facebook для входа в Firebase.
Войти через Google
Чтобы реализовать вход в Google с помощью Firebase, нам нужно добавить play-services-auth library
. Добавьте следующую строку под тегом зависимостей на уровне модуля файла build.gradle
:
implementation 'com.google.android.gms:play-services-auth:18.0.0'
Следующим шагом является включение опции входа в Google в консоли Firebase, как мы это делали для метода электронной почты / пароля.
Чтобы настроить вход в Google для запроса идентификаторов пользователей и базовой информации профиля, создайте объект GoogleSignInOptions
с параметром DEFAULT_SIGN_IN
. Чтобы также запрашивать адреса электронной почты пользователей, создайте объект GoogleSignInOptions
с параметром requestEmail
.
Затем нам нужно настроить вход в Google для запроса идентификаторов пользователей и основных данных профиля. Во-первых, нам нужно создать объект GoogleSignInOptions
с параметром DEFAULT_SIGN_IN
. Чтобы получить доступ к адресам электронной почты пользователей, добавьте параметр requestEmail
к объекту GoogleSignInOptions
. Посмотри:
Когда вы общаетесь с внутренним сервером с помощью входа в систему Google, вам необходимо вызвать requestIdToken
и передать токен, полученный, выполнив действия, описанные в этом руководстве.
Перейдите на страницу входа в Google, вызвав намерение входа в GoogleSignInOptions
, как показано ниже:
Если запрос будет успешным в onActivityResult
, мы сможем получить доступ к токену, который можно использовать в Firebase, как показано ниже:
Как только мы получим токен из авторизованной учетной записи, мы можем создать учетные данные, вызвав getCredentialon
на GoogleAuthProvider
, передав токен. Затем мы можем вызвать signInWithCredential
в экземпляре FirebaseAuth
с учетными данными в качестве параметра. Посмотри:
Войти с Facebook
Чтобы использовать вход через Facebook, нам нужно включить эту опцию в консоли Firebase, как мы это делали для методов Google и электронной почты / пароля.
Во-первых, нам нужно запросить у Facebook доступ к основной информации пользователя, такой как электронная почта и профиль. Для этого мы используем кнопку входа в Facebook и CallbackManager
, как показано ниже:
Если запрос выполнен успешно, мы можем получить доступ к токену из loginResult
, который используется для создания учетных данных из FacebookAuthProvider
. Посмотри:
Это все. Надеюсь, вы узнали что-то полезное. Спасибо за прочтение!