Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

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

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

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

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

  1. В Xcode при открытом проекте приложения перейдите в File > Add Packages .
  2. При появлении запроса добавьте репозиторий SDK Firebase для платформ Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Выберите библиотеку аутентификации Firebase.
  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 эмулятора аутентификации для неинтерактивного тестирования.

Подробное руководство доступно на странице Подключите ваше приложение к эмулятору аутентификации . Для получения дополнительной информации см. введение в 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;
  // ...
}

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

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