Вы можете использовать Firebase Authentication, чтобы позволить пользователям входить в ваше приложение, используя один или несколько методов входа, включая вход с адресом электронной почты и паролем, а также федеративных поставщиков удостоверений, таких как вход через Google и Facebook. Это руководство поможет вам начать работу с Firebase Authentication, показывая, как добавить адрес электронной почты и пароль для входа в ваше приложение.
Подключите свое приложение к Firebase
- Установите Firebase SDK .
- В консоли Firebase добавьте свое приложение в проект Firebase.
Добавьте аутентификацию Firebase в свое приложение
Используйте диспетчер пакетов Swift для установки и управления зависимостями Firebase.
- В Xcode при открытом проекте приложения перейдите в File > Add Packages .
- При появлении запроса добавьте репозиторий SDK Firebase для платформ Apple:
- Выберите библиотеку аутентификации Firebase.
- Когда закончите, Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk
(Необязательно) Создание прототипа и тестирование с помощью Firebase Local Emulator Suite
Прежде чем говорить о том, как ваше приложение аутентифицирует пользователей, давайте представим набор инструментов, которые вы можете использовать для прототипирования и тестирования функций аутентификации: Firebase Local Emulator Suite. Если вы выбираете между методами аутентификации и поставщиками, пробуете разные модели данных с общедоступными и частными данными с помощью правил аутентификации и безопасности Firebase или создаете прототипы пользовательского интерфейса для входа, возможность работать локально без развертывания живых сервисов может быть отличной идеей. .
Эмулятор проверки подлинности является частью пакета Local Emulator Suite, который позволяет вашему приложению взаимодействовать с содержимым и конфигурацией эмулируемой базы данных, а также, при необходимости, с эмулируемыми ресурсами проекта (функциями, другими базами данных и правилами безопасности).
Использование эмулятора аутентификации состоит всего из нескольких шагов:
- Добавление строки кода в тестовую конфигурацию вашего приложения для подключения к эмулятору.
- Из корня вашего локального каталога проекта запустите
firebase emulators:start
. - Использование пользовательского интерфейса Local Emulator Suite для интерактивного прототипирования или REST API эмулятора аутентификации для неинтерактивного тестирования.
Подробное руководство доступно на странице Подключите ваше приложение к эмулятору аутентификации . Для получения дополнительной информации см. введение в Local Emulator Suite .
Теперь давайте продолжим с тем, как аутентифицировать пользователей.
Инициализировать Firebase SDK
В своем делегате приложения сначала импортируйте Firebase SDK:
Быстрый
import FirebaseCore
Цель-C
@import FirebaseCore;
Затем в application:didFinishLaunchingWithOptions:
инициализируйте объект FirebaseApp
:
Быстрый
// Use Firebase library to configure APIs
FirebaseApp.configure()
Цель-C
// Use Firebase library to configure APIs
[FIRApp configure];
Прослушивание состояния аутентификации
Для каждого представления вашего приложения, которому требуется информация о вошедшем в систему пользователе, присоедините прослушиватель к объекту FIRAuth
. Этот прослушиватель вызывается всякий раз, когда изменяется состояние входа пользователя.
Прикрепите прослушиватель в методе viewWillAppear
контроллера представления:
Быстрый
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Цель-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
И отсоедините слушателя в методе viewWillDisappear
контроллера представления:
Быстрый
Auth.auth().removeStateDidChangeListener(handle!)
Цель-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Зарегистрируйте новых пользователей
Создайте форму, позволяющую новым пользователям регистрироваться в вашем приложении, используя свой адрес электронной почты и пароль. Когда пользователь заполняет форму, подтвердите адрес электронной почты и пароль, предоставленные пользователем, а затем передайте их методу createUser
:
Быстрый
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
// ...
}
Цель-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 }
// ...
}
Цель-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 += " "
}
// ...
}
Цель-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;
// ...
}
Следующие шаги
Узнайте, как добавить поддержку других поставщиков удостоверений и анонимных гостевых учетных записей: