В этом посте мы обсудим преимущества предоставления входа в систему с помощью Apple в вашем приложении, чтобы вы могли решить, стоит ли его интегрировать или нет. Во второй части этого поста мы предоставим пошаговое руководство по интеграции и расскажем обо всех проблемах, с которыми мы столкнулись и которые пришлось преодолеть.

Если вы еще не знаете, как войти в систему с Apple…

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

Apple сделает это обязательным к концу июня, если вы уже предоставляете стороннюю аутентификацию в социальных сетях, таких как Facebook, Google, Twitter и т. д. Вы можете посетить Рекомендации по обзору App Store для получения дополнительной информации об Apple. обзор магазина.

Что ставит на стол «Вход с помощью Apple»?

Он обеспечивает удобную систему входа и аутентификации в одно касание для вашего приложения, что означает, что больше людей будут входить в ваше приложение, а также более быстрый рост числа пользователей приложения, особенно у владельцев устройств Apple, которым нужно только проверить свою личность с помощью Touch Id или Идентификатор лица. Используя Войти с помощью Apple, пользователям не нужно запоминать учетные данные приложения, приложениям не нужно предоставлять рабочий процесс сброса пароля, удостоверения и проверки в приложении, а также предоставлять конкретную регистрацию и вход форма.

Вход через Apple - это стандартная жалоба FIDO U2F, что означает соблюдение требований безопасности, и нам не нужно об этом заботиться. Apple по умолчанию добавляет поддержку двухфакторной аутентификации, обеспечивая дополнительный уровень безопасности.

Иногда пользователь приложения предпочитает Войти с помощью Apple другим альтернативам, потому что у него есть возможность скрыть свой реальный адрес электронной почты, но это по-прежнему позволяет приложению получать реальную электронную почту пользователя через серверы Apple. Apple предоставляет личный адрес электронной почты пользователя, к которому можно получить доступ только из зарегистрированных в приложении доменов электронной почты, поэтому адрес электронной почты пользователя не имеет ценности за пределами серверов приложений и не может быть продан.

Несмотря на то, что Войти через Apple является мультиплатформенным, это означает, что мы можем заставить его работать в Интернете, на устройствах Android, приложениях Windows и платформах, предоставляемых Apple. Пользователю по-прежнему необходимо иметь устройство Apple для завершения двухфакторной аутентификации. После входа в систему с помощью Apple Id пользователь получает код 2FA от Apple на своем устройстве. Поэтому, если ваше приложение доступно не владельцам устройств Apple, просто разрешить Войти через Apple нельзя.

На этом этапе вы должны были получить представление обо всех преимуществах использования входа в систему с помощью Apple в своем приложении и иметь возможность решить, будет ли это полезно для вашего приложения. Итак, теперь давайте перейдем к пошаговому руководству по интеграции.

Руководство по интеграции

Добавить возможность входа в систему с помощью Apple

Прежде всего, нам нужно добавить в наш проект возможность Войти через Apple. Откройте файл проекта Xcode. В редакторе проекта выберите цель и откройте вкладку Подписание и возможности. На панели инструментов нажмите кнопку + Capability, чтобы открыть библиотеку возможностей и добавить возможность Войти с помощью Apple.

Добавить возможность в учетную запись разработчика Apple

Необходимо настроить свой проект на портале Apple Developer Program. Перейдите в Сертификаты, идентификаторы и профилиИдентификаторы и найдите идентификатор проекта. Найдите Войдите в систему с помощью функции Apple и, если она не включена, включите ее. Затем нажмите Изменить и выберите параметр Включить в качестве основного идентификатора приложения, как показано на снимке экрана. Сохраните новую конфигурацию.

Вернитесь на экран Сертификаты, идентификаторы и профиль и перейдите на страницу Ключи, чтобы зарегистрировать новый ключ. Нажмите кнопку + и добавьте возможность Войти через Apple, затем нажмите кнопку Настроить.

Обязательно выберите правильный идентификатор основного приложения и сохраните ключ конфигурации.

Теперь, когда мы закончили настройку среды, перейдем к коду.

Добавить кнопку

Хотя вы можете использовать свою настраиваемую кнопку, мы настоятельно рекомендуем использовать кнопки, предоставленные Apple, которые предлагают несколько преимуществ, показанных здесь.

Необходимо импортировать AuthenticationServices фреймворк, который предоставляет ASAuthorizationAppleIDButton класс кнопок. Добавить эту кнопку очень просто, вам просто нужно создать экземпляр кнопки и настроить его touchUpInside обработчик. Не забудьте добавить кнопку в иерархию представлений.

Нажатие кнопки ручки

После добавления кнопки нам нужно реализовать обработчик нажатия кнопки. Мы будем запрашивать разрешения Войти с Apple, используя класс ASAuthorizationAppleIDProvider, и будем использовать ASAuthorizationController для обработки потока интерфейса аутентификации.

Давайте реализуем обработчик кнопки

  1. Создать заявку (ASAuthorizationAppleIDRequest). Для его создания нам понадобится ASAuthorizationAppleIDProvider экземпляр.
  2. Определите область запроса, то есть данные, которые мы хотим получить от пользователя (в данном случае адрес электронной почты и полное имя).
  3. Создайте контроллер, который управляет запросами авторизации, созданными поставщиком.
  4. Предоставляет контекст отображения для представления пользователю интерфейса авторизации.
  5. Выполните запрос и откроется диалоговое окно аутентификации, показанное ниже.

Как видно из фрагмента кода выше, он должен соответствовать протоколам ASAuthorizationControllerDelegate и ASAuthorizationControllerPresentationContextProviding.

Мы соблюдаем ASAuthorizationControllerPresentationContextProviding, чтобы указать окно, которое будет содержать диалоговые окна SDK «Войти с помощью Apple», как показано в приведенном ниже коде.

Какие данные для аутентификации пользователей мы получаем от Apple?

Мы получим ASAuthorizationAppleIDCredential экземпляр, вот основная информация:

  • Идентификатор пользователя: уникальный идентификатор пользователя.
  • Полное имя: пользователь мог изменить свое полное имя, прежде чем делиться им с вашим приложением.
  • Электронная почта: адрес электронной почты пользователя, который может быть либо настоящим, либо скрытым.
  • Код авторизации и идентификационный токен: это зашифрованные данные, которые ваше клиентское приложение должно отправить в серверную часть, чтобы оно могло проверить подлинность информации.

Полное имя и Электронная почта являются необязательными и доступны только для новых пользователей, то есть пользователей, которые входят в приложение впервые.

Как мы получаем эти данные?

Нам необходимо реализовать две функции протокола ASAuthorizationControllerDelegate: одну для обработки успешной аутентификации, а другую для обработки ошибок во время аутентификации.

Начнем с успеха:

Стоит отметить, что мы получаем всю информацию только в том случае, если это новый пользователь, в противном случае мы не получаем ни fullName, ни email.

Чтобы исправить ошибки аутентификации и в конечном итоге показать некоторую обратную связь с пользователем (обычно Apple SDK выполняет эту работу), нам необходимо реализовать следующую функцию:

Обработка изменений

Пользователи могут отозвать разрешение для вашего приложения в Настройки → Apple ID → Пароль и безопасность → Приложения, использующие ваш Apple ID.

Apple предоставляет способ узнать, когда это произойдет, с помощью явного уведомления, чтобы наше приложение могло его обработать.

Нам необходимо зарегистрироваться для получения NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked уведомлений.

Мы можем проверить состояние учетных данных с помощью getCredentialStateForUserID. Помните, что мы должны были сохранить идентификатор пользователя в нашей связке ключей приложения. Давайте реализуем функцию для обработки NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked.

Интернет и Android-решение

Apple предоставляет JavaScript SDK для Android и веб-интеграции. Вы можете ознакомиться с документацией Войти с помощью Apple JS.

Связь между серверной частью и Apple

Apple предоставляет REST API для связи между серверами приложений и серверами аутентификации Apple. Вы можете использовать его для проверки токенов, используемых для проверки личности пользователя. Подробнее об этом вы можете прочитать в следующей документации.

Зарегистрируйте свои почтовые домены

Как мы упоминали ранее, для связи с пользователями приложения, которые выбирают параметр скрыть мою электронную почту, мы должны зарегистрировать домен почтового сервера приложения. Вы должны уже настроили платформу политики отправителя (SPF), чтобы использовать ее на этом этапе.

Чтобы настроить домены электронной почты, войдите в Программу разработчиков Apple. Перейдите в Сертификаты, идентификаторы и профиль → Еще и нажмите кнопку Настроить.

Нажмите +, чтобы зарегистрировать источники электронной почты. В разделе Домены и субдомены добавьте свое доменное имя, нажмите Далее и Зарегистрироваться.

Если вы не используете SPF, регистрация завершится ошибкой. Если вы используете Google для отправки писем, здесь у вас есть руководство по настройке.

После регистрации домена нажмите Загрузить, поместите файл в указанное место (https: //YourDomain/.well-known/apple-developer-domain-association.txt) и нажмите Подтвердить.

После того, как ваш домен пройдет проверку и будет зарегистрирован в вашей учетной записи, появится зеленая галочка.

Аспекты, о которых следует помнить

Есть некоторые аспекты, которые следует учитывать при его интеграции.

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

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

Что ж, надеюсь, теперь вы лучше понимаете Войти с помощью Apple, стоимость интеграции и подходит ли он для вашего приложения!

Интегрируете ли вы вход в систему с Apple в своем приложении и узнали что-то, что не описано в этой публикации? Дай мне знать в комментариях. Мне было бы интересно добавить его в этот блог.

Есть вопросы о входе в систему с помощью Apple? Я буду рад ответить на эти вопросы в комментариях, если смогу.

Технический опыт для создания отличных продуктов.

Мы предлагаем исключительную стратегию, дизайн и технологии для создания инновационного и ценного программного обеспечения.

Узнайте больше о наших услугах и о том, как мы можем вам помочь, на xmartlabs.com.

Первоначально опубликовано на https://blog.xmartlabs.com 4 мая 2020 г.