Як ми в Parallels підкорювали Sign In with Apple

Як ми в Parallels підкорювали Sign In with Apple

Думаю у багатьох вже після WWDC 2019 на слуху Sign In with Apple (коротко SIWA). У матеріалі я розповім з яким саме підводним камінням довелося зіткнутися при інтеграції цієї штукенції в наш ліцензійний портал. Ця стаття не зовсім для тих, хто тільки вирішив розібратися з SIWA (для них я дав низку ознайомлювальних посилань наприкінці тексту). У цьому матеріалі, швидше за все, багато хто знаходить відповіді на питання, які можуть виникнути при інтеграції нового сервісу Apple.

Apple не дозволяє кастомні редиректи

Власне, відповіді на це питання я й досі не бачу на девелоперських форумах. Суть у такому: якщо ви захочете скористатися SIWA JS API, тобто. Не працювати через нативний SDK через відсутність такого з тих чи інших причин (не macOS/iOS або стара версія цих систем), то вам необхідний свій публічний портал, інакше ніяк. Тому що на WWDR порталі треба зареєструвати та підтвердити те, що ви є власником, свій домен і тільки на нього можна начепити допустимі з погляду Apple редиректи:

Як ми в Parallels підкорювали Sign In with Apple

Що ж робити, якщо є бажання перехопити редирект у додатку? Ми вирішили цю проблему вкрай просто: завели на своєму порталі список допустимих редиректів для своїх додатків, які вони замовляють перед показом авторизаційної сторінки SIWA. І просто робимо перередирект з порталу в додаток з даними, отриманими від Apple. Просто і сердито.

Проблеми з e-mail

Давайте розглянемо, як ми вирішували проблеми з e-mail користувача. По-перше, немає ніякого REST API, що дозволяє отримати цю інфу з бекенда - тільки клієнт отримує ці дані і може передати разом з авторизаційним кодом.

По-друге, інформація про ім'я та e-mail користувача передається лише один раз, на перший логін користувача в додаток через Apple, де користувач вибирає опції шарингу своїх персональних даних.

Самі собою ці проблеми не прям критичні, якщо зв'язок із соціальним профілем було успішно створено на порталі — ідентифікатор користувача той самий і прив'язаний до Team ID — тобто. він один для всіх програм вашої команди, інтегрованих з SIWA. Але якщо логін був здійснений через Apple, а далі по дорозі відбулася помилка і зв'язок на порталі створена не була, то тут єдиний варіант відправляти користувача на appleid.apple.com, розривати зв'язок з додатком і пробувати знову. Власне, проблема вирішується написанням відповідної статті KB та посиланням на неї.

Наступна неприємніша проблема пов'язана з тим, що Apple придумали новий концепт з proxy e-mail. У нашому випадку, якщо користувач вже був на ліцензійному порталі зі своїм справжнім милом і при першому логіні через Apple вибирає опцію приховати e-mail, реєструється новий аккаунт із цим proxy e-mail, в якому очевидно немає жодних ліцензій, що ставить кінцевого користувача в глухий кут.

Вирішення проблеми досить просте: т.к. ідентифікатор користувач один і той же в SIWA і не залежить від вибраних опцій/додатку, в який здійснюється sign in, то ми просто за допомогою спеціального сценарію дозволяємо переключити цю зв'язку з Apple до іншого облікового запису зі справжнім милом користувача і тим самим відновити свої покупки ». Після цієї процедури користувач починає через SIWA потрапляти в інший обліковий запис на порталі і все працює правильно.

Під час Sign In через веб-портал немає іконки програми

Для вирішення іншої проблеми ми звернулися по роз'яснення до представників Apple, ділимося отриманими знаннями:

https://forums.developer.apple.com/thread/123054
Як ми в Parallels підкорювали Sign In with Apple

Тобто. сенс у наступному: на чолі SIWA групи м.б. поставлено лише macOS/iOS додаток, до якого вже додаються потрібні service IDs порталів. Відповідно, щоб показувалася іконка біля головної програми д.б. опубліковані в App Store версії з media, що пройшли перевірку Apple. Іконку буде взято звідти.

Відповідно, якщо у вас тільки портал і програми з App Store немає, то красивої іконки не буде, але з ім'ям програми можна викрутитися - за відсутності media у головної програми ця інформація береться з Description service ID:
Як ми в Parallels підкорювали Sign In with Apple
Як ми в Parallels підкорювали Sign In with Apple

Кількість елементів у групі SIWA обмежена 5

У цієї проблеми немає на даний момент рішення, крім як використовувати безліч груп, якщо вам не вистачає 6 ідентифікаторів: 1 головної програми та 5 залежних, то при спробі реєстрації наступного ви побачите таке повідомлення:

Як ми в Parallels підкорювали Sign In with Apple

Ми створили групи для нашого ліцензійного порталу та для кожної програми, яка оперує з цим порталом. З приводу обмеження слотів ми вже завели радар в Apple і очікуємо на їхню відповідь.

Корисні посилання

Найкорисніший лінк, мій погляд, яким я все робив насправді. Напівкорисна дока від Apple тут.

Enjoy! Питання, думки, ідеї та пропозиції приймаються у коментарях.

Джерело: habr.com

Додати коментар або відгук