Firebase Authentication позволяет пользователям входить в приложение с помощью одного или нескольких способов, включая адрес электронной почты и пароль, а также интегрированных поставщиков идентификационной информации, таких как Google Sign-In и Facebook Login. В этом руководстве по началу работы с Firebase Authentication показано, как добавить в приложение вход с помощью адреса электронной почты и пароля.
Как подключить приложение к Firebase
- Установите Firebase SDK.
- Добавьте приложение в проект Firebase в консоли Firebase.
Добавьте Firebase Authentication в свое приложение
Для установки зависимостей Firebase и управления ими используйте Swift Package Manager.
- Откройте проект приложения в Xcode и перейдите в меню File (Файл) > Add Packages (Добавить пакеты).
- Когда появится запрос, добавьте хранилище Firebase SDK для платформ Apple:
- Выберите библиотеку Firebase Authentication.
- Добавьте флаг
-ObjCв раздел Other Linker Flags (Другие флаги компоновщика) в настройках сборки целевого объекта. - После этого Xcode автоматически начнет распознавать и скачивать зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
(Необязательно) Создание прототипов и тестирование с помощью 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…
Теперь давайте продолжим с того, как выполнить аутентификацию пользователей.
Инициализируйте Firebase SDK
Сначала импортируйте Firebase SDK в делегат приложения:
Swift
import FirebaseCore
Objective-C
@import FirebaseCore;
Затем в методе application:didFinishLaunchingWithOptions: инициализируйте объект FirebaseApp:
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
Как прослушивать статус аутентификации
Для каждого представления приложения, которому требуется информация о вошедшем в аккаунт пользователе, прикрепите прослушиватель к объекту FIRAuth. Этот прослушиватель вызывается каждый раз, когда меняется статус входа пользователя.
Прикрепите прослушиватель в методе viewWillAppear контроллера представления:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Отключите прослушиватель в методе viewWillDisappear контроллера представления:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Регистрация новых пользователей
Создайте форму, которая позволит новым пользователям регистрироваться в вашем приложении, используя адрес электронной почты и пароль. Когда пользователь заполнит форму, проверьте указанные им адрес электронной почты и пароль, а затем передайте их методу createUser:
Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
// ...
}
Objective-C
[[FIRAuth auth] createUserWithEmail:email
password:password
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
Вход существующих пользователей
Создайте форму, которая позволит существующим пользователям входить в систему, используя адрес электронной почты и пароль. Когда пользователь заполнит форму, вызовите метод signIn:
Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
guard let strongSelf = self else { return }
// ...
}
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text
password:self->_passwordField.text
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
Получение информации о пользователе
После того как пользователь выполнит вход, вы сможете получить информацию о нем. Например, в прослушивателе состояния аутентификации:
Swift
if let user = user {
// 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 getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
var multiFactorString = "MultiFactor: "
for info in user.multiFactor.enrolledFactors {
multiFactorString += info.displayName ?? "[DispayName]"
multiFactorString += " "
}
// ...
}
Objective-C
if (user) {
// 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 getTokenWithCompletion:completion: instead.
NSString *email = user.email;
NSString *uid = user.uid;
NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
[multiFactorString appendString:info.displayName];
[multiFactorString appendString:@" "];
}
NSURL *photoURL = user.photoURL;
// ...
}
Дальнейшие действия
Узнайте, как добавить поддержку других поставщиков идентификационной информации и анонимных гостевых аккаунтов: