Вы можете использовать Firebase Authentication , чтобы разрешить пользователям входить в ваше приложение, используя один или несколько методов входа, включая вход по адресу электронной почты и паролю, а также федеративные поставщики удостоверений, такие как вход в Google и вход в Facebook. Из этого руководства вы узнаете, как начать работу с Firebase Authentication , показав, как добавить адрес электронной почты и пароль для входа в ваше приложение.
Подключите свое приложение к Firebase
- Установите Firebase SDK .
- В консоли Firebase добавьте свое приложение в проект Firebase.
Добавьте Firebase Authentication в свое приложение
Используйте Swift Package Manager для установки зависимостей Firebase и управления ими.
- В Xcode, открыв проект приложения, выберите «Файл» > «Добавить пакеты» .
- При появлении запроса добавьте репозиторий Firebase SDK для платформ Apple:
- Выберите библиотеку Firebase Authentication .
- Добавьте флаг
-ObjC
в раздел «Другие флаги компоновщика» настроек сборки вашей цели. - По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
(Необязательно) Создайте прототип и протестируйте его с помощью Firebase Local Emulator Suite
Прежде чем говорить о том, как ваше приложение выполняет аутентификацию пользователей, давайте представим набор инструментов, которые вы можете использовать для прототипирования и тестирования функций Authentication : Firebase Local Emulator Suite . Если вы выбираете методы и поставщики аутентификации, пробуете различные модели данных с общедоступными и частными данными с использованием Firebase Security Rules Authentication и безопасности Firebase или создаете прототипы проектов пользовательского интерфейса для входа в систему, возможность работать локально без развертывания действующих сервисов может быть отличной идеей. .
Эмулятор Authentication является частью Local Emulator Suite , который позволяет вашему приложению взаимодействовать с содержимым и конфигурацией эмулируемой базы данных, а также, при необходимости, с ресурсами эмулируемого проекта (функциями, другими базами данных и правилами безопасности).
Использование эмулятора Authentication включает всего несколько шагов:
- Добавление строки кода в тестовую конфигурацию вашего приложения для подключения к эмулятору.
- Из корня локального каталога проекта запустите
firebase emulators:start
. - Использование пользовательского интерфейса Local Emulator Suite для интерактивного прототипирования или REST API эмулятора Authentication для неинтерактивного тестирования.
Подробное руководство доступно в разделе «Подключите приложение к эмулятору Authentication . Дополнительные сведения см. во введении к 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;
// ...
}
Следующие шаги
Узнайте, как добавить поддержку других поставщиков удостоверений и анонимных гостевых учетных записей: