Вы можете использовать Firebase Authentication, чтобы позволить пользователям входить в ваше приложение с помощью одного или нескольких методов входа, включая вход по адресу электронной почты и паролю, а также с помощью федеративных поставщиков удостоверений, таких как вход в Google и вход в Facebook. Это руководство поможет вам начать работу с Firebase Authentication, показывая, как добавить адрес электронной почты и пароль для входа в ваше приложение.
Подключите свое приложение к Firebase
- Установите Firebase SDK .
- В консоли Firebase добавьте свое приложение в проект Firebase.
Добавьте аутентификацию Firebase в свое приложение
Добавьте зависимость для аутентификации Firebase в
Podfile
вашего проекта:pod 'Firebase/Auth'
Запустите
pod install
и откройте созданный файл.xcworkspace
.
(Необязательно) Прототип и тестирование с помощью Firebase Local Emulator Suite
Прежде чем говорить о том, как ваше приложение аутентифицирует пользователей, давайте представим набор инструментов, которые вы можете использовать для прототипирования и тестирования функциональности аутентификации: Firebase Local Emulator Suite. Если вы выбираете методы аутентификации и поставщиков, пробуете разные модели данных с общедоступными и частными данными с использованием правил аутентификации и безопасности Firebase или создаете прототипы пользовательского интерфейса для входа в систему, возможность работать локально без развертывания живых сервисов может быть отличной идеей. .
Эмулятор аутентификации является частью Local Emulator Suite, который позволяет вашему приложению взаимодействовать с эмулируемым содержимым и конфигурацией базы данных, а также с дополнительными ресурсами вашего эмулируемого проекта (функциями, другими базами данных и правилами безопасности). Обратите внимание, что Local Emulator Suite еще не поддерживает эмулируемое облачное хранилище.
Использование эмулятора аутентификации включает всего несколько шагов:
- Добавление строки кода в тестовую конфигурацию вашего приложения для подключения к эмулятору.
- Из корня локального каталога проекта запускаем
firebase emulators:start
. - Использование пользовательского интерфейса Local Emulator Suite для интерактивного прототипирования или REST API-интерфейса эмулятора аутентификации для неинтерактивного тестирования.
Подробное руководство доступно на странице Подключите свое приложение к эмулятору аутентификации . Для получения дополнительной информации см. Введение в Local Emulator Suite .
Теперь продолжим, как аутентифицировать пользователей.
Инициализировать Firebase SDK
В делегате приложения сначала импортируйте Firebase SDK:
Быстрый
import Firebase
Цель-C
@import Firebase;
Затем в методе application:didFinishLaunchingWithOptions:
инициализируйте объект FirebaseApp
:
Быстрый
// Use Firebase library to configure APIs
FirebaseApp.configure()
Цель-C
// Use Firebase library to configure APIs
[FIRApp configure];
Слушайте состояние аутентификации
Для каждого представления вашего приложения, которому нужна информация о FIRAuth
в систему пользователе, прикрепите слушателя к объекту 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;
// ...
}
Следующие шаги
Узнайте, как добавить поддержку для других поставщиков удостоверений и анонимных гостевых учетных записей: