Компания Apple опубликовала следующую новость 4 марта 2020 г.: “Все новые приложения и апдейты должны соответствовать новым гайдлайнам ревью и интерфейса к 30 апреля (перенесено на июнь) 2020.”
И главным новшеством этих гайдлайнов является обязательное наличие рабочей кнопки “Sign in with Apple” (SIWA) для приложений, позволяющих логиниться через сторонние сервисы (Facebook, Google, Twitter и т.д.).
Казалось бы, всё просто, но есть нюансы →
А можно не делать “Sign in with Apple”?
Да, если выполняется одно из следующих условий:
- Ваше приложение использует только вашу собственную систему аутентификации.
- У вас обучающее, корпоративное или бизнес приложение, которое требует аутентификации через существующий образовательный или корпоративный аккаунт.
- Ваше приложение использует государственную или отраслевую систему идентификации граждан или электронный идентификатор для аутентификации пользователей.
- Ваше приложение является клиентом для определенной сторонней службы, и пользователи должны войти в свою почту, социальные сети или другую стороннюю учетную запись напрямую, чтобы получить доступ к своему контенту.
Опыт компаний
На Хабре уже было несколько хороших статей про техническую сторону этого дела:
- Побробный гайд от ЦИАН — https://habr.com/ru/company/cian/blog/475062/
- Sports.ru — фронт, бэк
- Parallels — https://habr.com/ru/company/parallels/blog/469499/
Некоторые пишут, что юзеры очень охотно жмакают новую кнопку, и даже связывают рост аудитории с реализацией SIWA.
Вот еще неплохой гайд от Aaron Parecki — https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple
Пикантные моменты
SIWA поддерживается с iOS 13 и iPadOS 13.1, так что есть повод попросить у компании новый мощный айфон для тестирования. Эппл — это особенная компания, и кнопка логина через эппл получилась у них особенной. При кажущейся простоте задачи, рекомендую обратить внимание на следующие вещи.
Пользовательские данные посылаются только один раз
Sign in with Apple получает имя, фамилию и имейл пользователя только один раз при первом логине. У сервера нет доступа к этим данным. При последующих попытках входа приходят только authorizationCode из ASAuthorizationAppleIDCredential.
Источник: Sports.ru
Поэтому на клиентской стороне нужно хранить данные пользователя до тех пор, пока регистрация на сервере не завершится успешно.
Ключик максимум на 6 месяцев
Максимальный срок, на который можно сгенерировать client_secret JWT токен равен 6 месяцам.
Совет — встройте процедуру перегенерации токена в свой пайплайн, а также делайте ключи на 1 месяц, чтобы обеспечить сесурити и исключить возможность протухания ключа на проде.
Можно также сделать хелс чек, который будет проверять валидность или срок действия ключа.
Функция Logout отсутствует
У SOWA нету функции logout в классическом понимании этого слова. Библиотека не хранит никакие данные, в отличие от других библиотек входа, поэтому нет необходимости стирать данные, полученные при логине.
Источник: Sports.ru
Юзер может скрыть свой имейл и выбрать себе имя
Пользователь может выбрать опцию Hide my email. В этом случае вы получите его прокси имейл, созданный эпплом вида random_chars@privaterelay.appleid.com. По умолчанию, на такие адреса нельзя ничего отправить, не сделав дополнительных телодвижений.
Вот гайд, описывающий принцип работы таких имейлов, а вот инструкции по настройке эппл аккаунта и сервисов рассылки, чтобы можно было отправлять письма на privaterelay ящики.
А еще в гайдлайнах есть фраза “Avoid asking for a personal email address when people supply a private relay address.” В конце материала есть вопрос к читателям на этот счет.
Юзер может указать себе любое имя и фамилию, причем фамилия может быть пустой — так что пересмотрите все места в вашем приложении, где используются эти данные.
И конечно же не забывайте добавить Apple ID, имя, фамилию и имейл в свои PII и GDPR процедуры, они же у вас есть.
Не совсем полная документация
Скорее всего придется попотеть с client_secret. В этой статье подробно расписано, как его генерировать.
Только трушный яблочный дизайн
Только попробуйте перевернуть яблоко или сделать отступы чуть больше — сразу в бан.
Вот дизайн спека —
https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple/overview/buttons/
Из интересных моментов:
- Нельзя юзать просто лого как кнопку
- Высота лого должна соответствовать высоте кнопки
- Нельзя обрезать лого
- Нельзя добавлять вертикальный отступ
- Нельзя кастомизировать цвета лого
- Использовать только шрифт системы
- Размер шрифта должен составлять 43% от высоты кнопки
Для читателей в конце материала есть пример и вопрос на эту тему.
SIWA не только для яблочных девайсов
Можно добавить вход через эппл для веб платформ и даже Андроид приложений, используя JavaScript API.
Вопросы знатокам
1 — Дизайн кнопки
Пропустит ли аппстор проверка кнопку с таким дизайном?
Остальные кнопки в нашем приложении имеют именно такой стиль, поэтому плоская кнопка, выполненная по всем гайдлайнам смотрелась бы как инородный элемент.
2 — Какие данные показывать
У пользователя был аккаунт в приложении и имя с имейлом мы взяли с его фейсбук аккаунта (фейсбук явно это спрашивает и пользователь дает согласие). Теперь этот же пользователь привязал к своему аккаунту Apple Sign in, где указал другое имя и выбрал опцию “hide my email”.
Какие данные указывать в приложении — фейсбучные или эппловские?
3 — Как узнать, что все в порядке
Вот сделали мы SIWA — а как быть уверенными, что все по гайдлайнам, и что приложение пройдёт проверку в аппсторе после 30 июня (но узнать это уже сейчас)?
Может, на Хабре есть кто-то из официальных представителей…
P.S.
Надеюсь, что эта новость была для вас похожа на записку от Капитана Очевидность, и вы всё уже давно реализовали.
А если нет … расслабьтесь — у вас есть ещё 2 несколько спринтов!
Автор материала — Александр Зинчук, продакт менеджер. Новостной материал опубликован в блоге компании Alconost Inc. с разрешения автора.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Мы также делаем рекламные и обучающие видеоролики.
→ Подробнее