Запили Sign in with Apple, или 30 апреля (точнее июня) твоё приложение превратится в тыкву

    Часть 2


    Компания Apple опубликовала следующую новость 4 марта 2020 г.: “Все новые приложения и апдейты должны соответствовать новым гайдлайнам ревью и интерфейса к 30 апреля (перенесено на июнь) 2020.”


    И главным новшеством этих гайдлайнов является обязательное наличие рабочей кнопки “Sign in with Apple” (SIWA) для приложений, позволяющих логиниться через сторонние сервисы (Facebook, Google, Twitter и т.д.).



    Казалось бы, всё просто, но есть нюансы →


    А можно не делать “Sign in with Apple”?


    Да, если выполняется одно из следующих условий:


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

    Опыт компаний


    На Хабре уже было несколько хороших статей про техническую сторону этого дела:



    Некоторые пишут, что юзеры очень охотно жмакают новую кнопку, и даже связывают рост аудитории с реализацией 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 несколько спринтов!



    Часть 2


    Автор материала — Александр Зинчук, продакт менеджер. Новостной материал опубликован в блоге компании Alconost Inc. с разрешения автора.


    Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Мы также делаем рекламные и обучающие видеоролики.
    → Подробнее

    Alconost
    Локализуем на 70 языков, делаем видеоролики для IT

    Комментарии 11

      +2

      Не понял претензии к Apple по поводу iOS 13 и нового айфона — она поддерживается с iPhone 6S, в чём проблема?

        0
        Это не претензия, немного юмора.
          +1
          с тем, что iOS 12 всё ещё обновляется, и осталась масса устройств на iOS9+ у людей (хотя билдят сейчас уже в основном для 10 и выше).
            +1

            Видимо, Apple не важны эти пользователи.


            77% of all devices introduced in the last four years use iOS 13.


            77% iOS 13
            17% iOS 12
            6% Earlier

        • НЛО прилетело и опубликовало эту надпись здесь
            0
            А что вы предложили бы? Поменять стиль всего приложения?
              0
              Справедливости ради — к счастью, Яббл разрешает убрать эти мерзкие скругления у кнопки. Спасибо и на этом.
              Выдержка из гайдлайна

              +1
              Продлили до 30 июня.
              https://developer.apple.com/news/?id=03262020b
                0
                спасибо за инфу! в следующий раз буду быстрее писать и публиковать)
                  0
                  Спасибо большое за апдейт и ссылку! Мы поправили сроки в материале.
                  0
                  enl NXRezzn AppleUS — можете помочь с ответами на вопросы в конце статьи как официальные сотрудники?

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

                  Самое читаемое