Catch up on everthing we announced at this year's Firebase Summit. Learn more

Начните с аутентификации Firebase на платформах Apple

Вы можете использовать Firebase Authentication, чтобы пользователи могли входить в ваше приложение, используя один или несколько методов входа, включая вход по адресу электронной почты и паролю, а также федеративные поставщики удостоверений, такие как вход в Google и вход в Facebook. Это руководство поможет вам начать работу с Firebase Authentication, показывая, как добавить адрес электронной почты и пароль для входа в ваше приложение.

Подключите свое приложение к Firebase

  1. Установите Firebase SDK .
  2. В Firebase консоли , добавьте приложение в свой проект Firebase.

Добавьте аутентификацию Firebase в свое приложение

Используйте Swift Package Manager для установки и управления зависимостями Firebase.

  1. В Xcode, с приложением проекта открыто, перейдите в меню Файл> Swift пакеты> Добавить пакет Завис.
  2. При появлении запроса добавьте репозиторий Firebase Apple Platform SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Выберите библиотеку Firebase Authentication.
  5. По завершении Xcode автоматически начнет разрешение и загрузку ваших зависимостей в фоновом режиме.

(Необязательно) Прототип и тестирование с помощью Firebase Local Emulator Suite

Прежде чем говорить о том, как ваше приложение аутентифицирует пользователей, давайте представим набор инструментов, которые вы можете использовать для прототипирования и тестирования функциональности аутентификации: Firebase Local Emulator Suite. Если вы выбираете методы и поставщиков аутентификации, пробуете разные модели данных с общедоступными и частными данными с использованием правил аутентификации и безопасности Firebase или создаете прототипы пользовательского интерфейса входа в систему, возможность работать локально без развертывания живых сервисов может быть отличной идеей. .

Эмулятор аутентификации является частью Local Emulator Suite, который позволяет вашему приложению взаимодействовать с эмулируемым содержимым и конфигурацией базы данных, а также с дополнительными ресурсами вашего эмулируемого проекта (функциями, другими базами данных и правилами безопасности).

Использование эмулятора аутентификации включает всего несколько шагов:

  1. Добавление строки кода в тестовую конфигурацию вашего приложения для подключения к эмулятору.
  2. Из корня вашей локальной директории проекта, работает firebase emulators:start .
  3. Использование пользовательского интерфейса Local Emulator Suite для интерактивного прототипирования или REST API-интерфейса эмулятора аутентификации для неинтерактивного тестирования.

Подробное руководство доступно в Connect ваше приложение в эмуляторе аутентификации . Для получения дополнительной информации см введение Local Emulator люкс .

Теперь продолжим, как аутентифицировать пользователей.

Инициализировать 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 объекта. Этот слушатель вызывается при изменении состояния входа пользователя.

Приложить слушатель контроллера представления 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;
  // ...
}

Следующие шаги

Узнайте, как добавить поддержку для других поставщиков удостоверений и анонимных гостевых учетных записей: