Создать кнопку входа, проверить данные и обработать изменения авторизации пользователей

Благодаря недавнему объявлению Apple на WWDC о входе в систему с помощью Apple вы, как разработчик, можете предоставить своим пользователям совершенно новую возможность для создания учетной записи и входа в ваше приложение. Давайте погрузимся в подробности и посмотрим, как встроить функцию «Вход с помощью Apple» в свое приложение.

Включите вход через Apple в свой идентификатор пакета приложений

Войдите в свою учетную запись разработчика. Под настройкой идентификатора приложения - ›Возможности установите флажок« Войти через Apple ».

Включить вход через Apple из Xcode

Откройте бета-версию Xcode 11 или более новую версию. В настройках проекта выберите цель - ›Подписание и возможности, добавьте Войти через Apple.

Обзор реализации

  1. Создайте кнопку «Войти через Apple».
  2. Спросите у пользователя авторизацию.
  3. Сравните пользовательские данные с вашими сохраненными данными (локально или с сервера).
  4. Обработка изменения авторизации пользователя.

1. Создайте вход с помощью кнопки Apple.

2. Попросите пользователя авторизоваться.

  • В handleAuthorization он запрашивает авторизацию пользователя с помощью информационного запроса user name и email.
  • При создании AsAuthorizationController необходимо указать обаdelegate и presentationContextProvider.
  • delegate обеспечивает состояние запроса авторизации - сбой (из-за ошибки) или успех.
  • presentationContextProvider запрашивает окно для отображения пользовательского интерфейса авторизации.

3. Проверьте данные пользователя по сохраненным данным (локально или с сервера).

На шаге 2 вы получите пользователя credential.

if let credential = authorization.credential as? ASAuthorizationAppleIDCredential

Стоит упомянуть некоторую информацию из credential:

  • Электронная почта пользователя: credential.email
  • Имя пользователя: credential.fullName
  • Идентификатор пользователя: credential.user
  • Состояние авторизации: credential.state
  • Маркер обновления: let code = credential.authorizationCode, let codeStr = String(data: code, encoding: .utf8)
  • Маркер доступа: let idToken = credential.identityToken, let tokeStr = String(data: idToken, encoding: .utf8)

4. Обработка изменения авторизации пользователя

Пользователи всегда могут изменить свою авторизацию для приложения. Наша работа - узнать об изменении как можно раньше и обработать его.

Чтобы обработать изменение, нам нужно сохранить информацию user identifier
, полученную на шаге 3.

Затем в AppDelegate мы просто передаем user identifier ASAuthorizationAppleIDProvider для проверки, и вы можете получить следующие состояния:

  • authorized
  • revoked
  • notFound

Обратите внимание, что пользователи могут удалить авторизацию приложения на странице настроек iOS в любое время, поэтому нам необходимо регулярно проверять ее.