Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Firebase
Code

Начало работы с аутентификацией Firebase под iOS

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

Firebase - это кросс-платформенная платформа мобильной базы данных в режиме реального времени, которая позволяет программисту сосредоточиться на том, что они лучше всего пишут в своих приложениях, - не беспокоясь о проблемах с DevOps, таких как инфраструктура сервера и моделирование базы данных. Firebase, опираясь на Google, берет на себя сложность в работе с базами данных реального времени, аутентификацией пользователей и работой с автономными рабочими процессами синхронизации.

Хотя для BaaS существует множество решений, таких как Realm (ознакомьтесь с моим руководством по Realm.io здесь, на Envato Tuts +). Firebase не требует настройки конфигурации сервера инфраструктуры, поскольку платформа заботится о хостинге и в свою очередь предоставляет SDK.

Помимо NoSQL базы данных в режиме реального времени, с Firebase вы получаете аналитику, отчеты о сбоях, аутентификацию пользователей, облачные сообщения, push-уведомления и многое другое. Связанные с этим затраты также зависят от вашего проекта: по мере роста вы переходите от модели freemium к модели для каждого использования.

В этом уроке я покажу вам, как настроить Firebase на iOS с помощью CocoaPods и как аутентифицировать пользователей, используя два популярных метода: электронную почту и пароль или через телефон с помощью SMS.

Чтобы узнать о Firebase для Android, ознакомьтесь с некоторыми нашими другими учебниками здесь, на Envato Tuts +.

Ваше первое приложение Firebase

Предпосылки

Вам понадобится следующее:

  • IOS 10 с Xcode 8
  • Установленный CocoaPods
  • Бесплатная учетная запись Firebase

Предполагаемые знания

В этом учебнике предполагается, что у вас есть рабочее знание iOS и Swift, а также некоторый базовый опыт работы с CocoaPods. Если вам нужно узнать больше, ознакомьтесь с нашими учебниками Swift и учебниками CocoaPods.

Цели этого учебника

В конце этого урока вы начнете с простого приложения Firebase, которое использует Firebase SDK для аутентификации пользователей, используя электронную почту и пароль, а также через SMS. По пути вы узнаете о:

  1. Настройка Firebase с помощью CocoaPods
  2. Настройка делегата приложения для подключения к Firebase
  3. Настройка прав доступа для аутентификации пользователя Text/SMS
  4. Использование FirebaseUI для аутентификации пользователей

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

Настройка проекта

В этой серии мы собираемся создать приложение to-do под названием FirebaseDo. Начнем с клонирования проекта с GitHub:

Затем мы собираемся инициализировать проект для создания нового PodFile следующим образом:

pod init

Вы должны увидеть новый файл под именем Podfile, расположенный в корневой директории вашего проекта. Этот файл в основном устанавливает библиотеки, которые мы хотим использовать в нашем проекте. Откройте его и добавьте следующие строки определения Firebase:

Сохраните, а затем введите в своем терминале следующее:

pod install

Мы будем использовать FirebaseDo.xcworkspace вместо FirebaseDo.xccodeproj, позволяя нам работать с библиотеками зависимостей, которые мы настраиваем на CocoaPods, поэтому заходим и открываем рабочее пространство, а затем переключаемся в ваш браузер.

Теперь перейдите на панель Firebase и создайте новый проект:

Creating a new project in Firebase

Затем нажмите «Добавить Firebase» в приложение iOS, после чего вы будете шаг за шагом проходить процесс регистрации вашего приложения в Firebase.

Adding Firebase to your iOS app

В какой-то момент вас попросят добавить файл GoogleService-info.plist в ваш проект Xcode:

 Adding GoogleService plist file to your iOS project

Вы уже добавили библиотеки через CocoaPods, поэтому вы можете пропустить оставшиеся инструкции и вернуться в консоль Firebase.

Аутентификация пользователей

Firebase Authentication предоставляет базовые службы, простые в использовании SDK и готовые библиотеки пользовательского интерфейса для аутентификации пользователей в вашем приложении. Он поддерживает аутентификацию с использованием паролей, телефонных номеров, популярных провайдеров идентификации, таких как Google, Facebook и Twitter, и многое другое. (Источник: Аутентификация Firebase)

Прежде чем мы покажем, как использовать FirebaseUI для автоматизации аутентификации ваших пользователей, мы сначала рассмотрим методы SDK, которые Firebase предоставляет как часть API-интерфейсов FirebaseAuth Framework для управления созданием и входом пользователей вручную.

Зарегистрироваться, войти и выйти из системы

Чтобы создать нового пользователя, вы должны использовать блок метода Auth.auth().CreateUser() следующим образом:

Предполагая, что объект error равен нулю, пользователь будет не только успешно зарегистрирован, но и будет так же залогинен. Чтобы явно войти под существующим пользователем, вы должны вызвать:

Выйти из системы так же просто вызовите try! FirebaseAuth.signOut():

Мы хотим иметь возможность изящно обрабатывать различные потенциальные ошибки, если вызовы аутентификации сбиваются с пути, а когда объект error не равен нулю (или наоборот, объект user равен нулю), произошла ошибка. Обратитесь к документации Firebase за списком всех распространенных кодов ошибок. В нашем коде мы рассмотрим лишь несколько общих ошибок.

Управление изменениями состояния аутентификации

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

Создав обработчик, .addStateDidChangeListener, вы теперь можете определить, в каком состоянии находится пользователь, и инициировать определенный вызов на основе этого.

Управление пользователями

После аутентификации пользователя вы можете получить доступ к объекту user и получить информацию о пользователе, такую как идентификатор пользователя, адрес электронной почты и аватар с фотографией (если предоставлено). Следующий метод также будет проверять, что пользователь действительно аутентифицирован, когда объект user не равен нулю:

Отправка пользователям email

Firebase обеспечивает отличную поддержку для верификации по email или отправки запроса на сброс пароля на emai.

Анонимные пользователи

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

Чтобы перевести пользователя с анонимной учетной записи на аутентифицированную учетную запись (используя электронную почту и пароль), вы вызываете следующий метод в контроллере просмотра экрана регистрации, запрашиваете адрес электронной почты и пароль, а затем вызываете метод user.link().

Firebase также поддерживает методы для других механизмов аутентификации.

Итак мы рассмотрели важные методы API, которые Firebase предоставили для обработки и проверки подлинности пользователей. Несмотря на то, что код, который я показал вам не выглядит особо сложным, Firebase делает его еще проще, чем при использовании FirebaseUI. Во второй половине этого урока мы добавим аутентификацию в наше пробное приложение.

Реализация FirebaseUI

FirebaseUI предоставляет автоматическое решение, которое обрабатывает потоки пользовательского интерфейса для входа пользователями с адресами электронной почты и паролями, номерами телефонов и с популярными поставщиками авторизации, включая вход в систему Google и вход в систему Facebook.

Затем мы продемонстрируем, как реализовать аутентификацию с помощью FirebaseUI.

В консоли Firebase перейдите на вкладку «Аутентификация» и включите следующие способы аутентификации:

  • Пароль от электронной почты
  • Телефон
Adding EmailPassword and Phone support to app

Мы только что видели, как управлять и аутентифицировать пользователей вручную, используя доступные Firebase SDK. Теперь мы рассмотрим, как позволить FirebaseUI сделать всю тяжелую работу за нас. В HomeViewController.swift импортируйте следующие библиотеки:

В декларации UIViewController.swift добавьте FUIAuthDelegate:

Ниже этого объявления класса мы собираемся объявить три частные переменные, с которыми мы будем работать. Это позволит нам ссылаться на наш текущий объект аутентификации, экземпляр AuthUI и наши слушатели аутентификации, соответственно:

Затем давайте подключим наш контроллер просмотра так, чтобы при первом загрузке мы подключили слушателя, чтобы с помощью обработчика определить, когда состояние аутентификации изменяется. Когда состояние auth изменяется, мы вызываем метод self.loginAction (sender: self), чтобы вызвать наш контроллер проверки подлинности FirebaseUI.

В этом методе мы также устанавливаем приватные переменные, которые мы объявили ранее, установите делегат authUI в наш собственный класс и, наконец, установите список других поставщиков, которые мы будем поддерживать, что в нашем случае будет FUIPhoneAuth.

Если мы хотим поддерживать Google, Facebook или других сторонних поставщиков, мы можем добавить их в этот список. Также обратите внимание: нам не нужно явно указывать адрес электронной почты и пароль, поскольку он неявный, при условии, что он включен в консоли Firebase.

Отображение входа в систему

Затем мы обрабатываем метод loginAction(), который вызывается в том случае, если слушатель событий определяет, что пользователь в настоящее время не аутентифицирован. Все, что нам нужно сделать в этом случае, представляет собой modhUI.authViewController modal FirebaseUI, и он будет включать связанные поставщики аутентификации, которые мы объявили ранее.

Здесь начинается волшебство, так как FirebaseUI обрабатывает все: просит пользователя ввести свой адрес электронной почты, определяет, существует ли пользователь (в этом случае у пользователя будет запрошен пароль) или для нового пользователя, запросит их имя и назначение пароля.

Если бы мы вручную применяли методы аутентификации, нам нужно было бы обрабатывать все эти разные сценарии, включая сброс пароля электронной почты и т.д.

Обработка изменений состояния Auth

Наконец, мы реализуем требуемый протокол для нашего делегата FIRAuthUIDelegate, который позволит нам прослушивать и обрабатывать состояния аутентификации. Этот метод будет действовать только в том случае, если ошибка действительно произошла, но мы можем даже обрабатывать успешные аутентификации.

Настройка аутентификации телефона

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

Чтобы получить токен APN, необходимый серверу Firebase, выполните следующее в файле AppDelegate.swift:

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

Вы не сможете протестировать этот метод аутентификации с помощью Xcode Simulator, скорее вам нужно будет подключить ваш iPhone для установки и запуска приложения.

В Xcode перейдите в «Возможности» и включите Push-уведомления. Приложение автоматически предоставит и создаст файл FirebaseDo.entitlements, как показано в навигаторе проекта.

Adding Push Notifications in Xcode

Затем мы создадим ключ аутентификации Apple Push Notification для загрузки в Firebase. На портале разработчиков Apple в разделе «Ключи» введите название своего проекта, указав флажки APN. Загрузите полученный файл .p8 и обратите внимание на идентификатор ключа, который нам нужно будет ввести в ближайшее время.

Creating a new Key in the Developer Portal

Вернитесь в консоль Firebase и в разделе «Настройки проекта» (значок шестеренки) выберите вкладку «Облачные сообщения». В разделе «Конфигурация приложения App Store» и «APNs Authentication Key» выберите кнопку «Загрузить» и загрузите файл .p8 вместе с идентификатором ключа и идентификатором приложения. В результате экран настроек должен выглядеть следующим образом:

Adding APNs key in Firebase

Тестирование приложения

И это все - нам не нужно было добавлять очень много дополнительного кода в наше приложение, чтобы настроить его для полного процесса регистрации и входа в систему. Давайте создадим и запустим приложение в Xcode, чтобы увидеть FirebaseUI в действии. При первом запуске приложения вы не будете аутентифицированы, поэтому вы получите шаблон общего назначения с параметрами проверки подлинности, которые вы выбрали в консоли Firebase.

Modal FirebaseUI authentication screen

Это выглядит слегка сыро, но вы можете настроить практически все аспекты шаблона.

Email sign-in prompt in FirebaseUI

Ввод нового адреса электронной почты пользователя приведет к экрану «Создать учетную запись», в котором будет указано ваше имя и пароль.

Firebase UI authentication determining the user is new prompting for the rest of the information

Заполнив эту форму, вы зарегистрируетесь как новый пользователь (хотя наше приложение будет отображать только пустой экран). Чтобы подтвердить, что новый пользователь был создан, вы можете перейти в «Аутентификация»> «Пользователи» в вашей Firebase Console.

Проверьте каждый из методов проверки подлинности, помня, что вам нужно будет выйти из системы, чтобы повторно запустить запрос проверки подлинности. Повторно активируйте auth, добавив следующий код в качестве первой строки в viewDidLoad() после вызовите:

Это заставит приложение вернуться в исходное состояние, чтобы вы могли протестировать аутентификацию с помощью SMS. Запустите приложение еще раз, на этот раз выбрав «Войти с телефоном».

Заключение

В этом уроке вы познакомились с использованием Firebase в качестве базовой платформы для своего приложения, и вы узнали, как аутентифицировать пользователей, используя традиционную комбинацию электронной почты и пароля, а также через телефон и SMS, подход, ставший популярным благодаря таким приложениям Как WhatsApp.

Затем мы приступили к созданию нашего простого приложения FirebaseDo, и хотя оно еще не выполняет никаких функций напоминания, мы начнем работать над этим в следующем учебном пособии. Но всего за несколько строк нам удалось выполнить следующее:

  • Встроенная Firebase для настройки механизма аутентификации для электронной почты и пароля
  • Добавлена возможность аутентификации через SMS
  • Отслеживаемые состояния аутентификации
  • Грамотно обрабатывать ошибки

В оставшейся части серии вы познакомитесь с некоторыми другими компонентами Firebase.

И пока вы здесь, обязательно ознакомьтесь с некоторыми другими нашими статьями по разработке приложений для iOS!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.