Вы можете использовать Firebase Authentication , чтобы разрешить пользователям входить в ваше приложение, используя один или несколько методов входа, включая вход с помощью адреса электронной почты и пароля, а также поставщиков федеративных удостоверений, таких как Google Sign-in и Facebook Login. Это руководство поможет вам начать работу с Firebase Authentication , показав, как добавить вход с помощью адреса электронной почты и пароля в ваше приложение.
Подключите свое приложение к Firebase
- Установите Firebase SDK .
- В консоли Firebase добавьте свое приложение в проект Firebase.
Добавьте Firebase Authentication в свое приложение
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode откройте проект приложения и перейдите в меню Файл > Добавить пакеты .
- При появлении соответствующего запроса добавьте репозиторий Firebase Apple platform SDK:
- Выберите библиотеку Firebase Authentication .
- Добавьте флаг
-ObjC
в раздел «Другие флаги компоновщика» настроек сборки вашей цели. - По завершении 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:
Быстрый
import FirebaseCore
Objective-C
@import FirebaseCore;
Затем в application:didFinishLaunchingWithOptions:
инициализируйте объект FirebaseApp
:
Быстрый
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
Прослушивание состояния аутентификации
Для каждого из представлений вашего приложения, которым требуется информация о вошедшем в систему пользователе, прикрепите слушателя к объекту FIRAuth
. Этот слушатель вызывается всякий раз, когда изменяется состояние входа пользователя.
Присоедините прослушиватель к методу viewWillAppear
контроллера представления:
Быстрый
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
И отсоедините слушателя в методе viewWillDisappear
контроллера представления:
Быстрый
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Регистрация новых пользователей
Создайте форму, которая позволяет новым пользователям регистрироваться в вашем приложении, используя свой адрес электронной почты и пароль. Когда пользователь заполняет форму, проверьте адрес электронной почты и пароль, предоставленные пользователем, затем передайте их методу createUser
:
Быстрый
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
:
Быстрый
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) {
// ...
}];
Получить информацию о пользователе
После успешного входа пользователя в систему вы можете получить информацию о пользователе. Например, в вашем прослушивателе состояния аутентификации :
Быстрый
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;
// ...
}
Следующие шаги
Узнайте, как добавить поддержку других поставщиков удостоверений и анонимных гостевых учетных записей: