Аутентифицировать пользователей с помощью библиотеки 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. Посмотри:

Это все. Надеюсь, вы узнали что-то полезное. Спасибо за прочтение!