Создать кнопку входа, проверить данные и обработать изменения авторизации пользователей
Благодаря недавнему объявлению Apple на WWDC о входе в систему с помощью Apple вы, как разработчик, можете предоставить своим пользователям совершенно новую возможность для создания учетной записи и входа в ваше приложение. Давайте погрузимся в подробности и посмотрим, как встроить функцию «Вход с помощью Apple» в свое приложение.
Включите вход через Apple в свой идентификатор пакета приложений
Войдите в свою учетную запись разработчика. Под настройкой идентификатора приложения - ›Возможности установите флажок« Войти через Apple ».
Включить вход через Apple из Xcode
Откройте бета-версию Xcode 11 или более новую версию. В настройках проекта выберите цель - ›Подписание и возможности, добавьте Войти через Apple.
Обзор реализации
- Создайте кнопку «Войти через Apple».
- Спросите у пользователя авторизацию.
- Сравните пользовательские данные с вашими сохраненными данными (локально или с сервера).
- Обработка изменения авторизации пользователя.
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 в любое время, поэтому нам необходимо регулярно проверять ее.