Sign in with Apple: інтеграція авторизації через Apple ID у iOS

Sign in with Apple: повна інтеграція авторизації через Apple ID Користувач не може повторно ввійти в додаток — стандартна біль команд, які не знають про одноразову передачу email. У 70% випадків email не зберігається на сервері, і при повторному вході Apple не передає його знову. Ми стикалися з ц

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Sign in with Apple: інтеграція авторизації через Apple ID у iOS
Середній
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Sign in with Apple: повна інтеграція авторизації через Apple ID

Користувач не може повторно ввійти в додаток — стандартна біль команд, які не знають про одноразову передачу email. У 70% випадків email не зберігається на сервері, і при повторному вході Apple не передає його знову. Ми стикалися з цим не раз і виробили надійне рішення. Наше завдання — реалізувати Sign in with Apple так, щоб користувач завжди міг увійти повторно, а додаток відповідав вимогам App Store Review Guidelines.

Як Apple передає дані користувача?

Apple не віддає реальний email користувача додатку — якщо користувач обрав приховування email, додаток отримує relay-адресу виду [email protected]. Листи на цю адресу Apple пересилає на реальну. Якщо користувач відкликає доступ додатку — relay перестає працювати.

Ім'я та email передаються тільки один раз — при першій авторизації. Якщо ви не зберегли їх у своїй базі — при повторному вході Apple їх не віддасть. Це не баг, це навмисне рішення Apple. Команди, які не знали про це, виявляли проблему в продакшені: користувачі не можуть повторно ввійти, тому що backend не зберіг email при першій авторизації.

Реалізація на iOS

import AuthenticationServices // Запит авторизації let appleIDProvider = ASAuthorizationAppleIDProvider() let request = appleIDProvider.createRequest() request.requestedScopes = [.fullName, .email] let authorizationController = ASAuthorizationController(authorizationRequests: [request]) authorizationController.delegate = self authorizationController.presentationContextProvider = self authorizationController.performRequests() // Обробка результату func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { guard let credential = authorization.credential as? ASAuthorizationAppleIDCredential else { return } let userID = credential.user // Стабільний ідентифікатор користувача let identityToken = credential.identityToken // JWT для верифікації на сервері let authorizationCode = credential.authorizationCode // Для обміну на refresh token // email та fullName доступні ТІЛЬКИ при першій авторизації let email = credential.email let fullName = credential.fullName } 

credential.user — стабільний ідентифікатор, унікальний для пари (користувач, додаток). Не використовується для ідентифікації користувача між додатками однієї команди (для цього — identityToken з sub claim).

Верифікація JWT на сервері

Клієнт передає identityToken (JWT) на backend. Сервер верифікує:

  1. Підпис токена публічним ключем Apple (ключі за https://appleid.apple.com/auth/keys)
  2. aud claim співпадає з Bundle ID додатку
  3. iss = https://appleid.apple.com
  4. exp не вичерпано

Після першої авторизації authorizationCode обмінюється на refresh_token через Apple's token endpoint. refresh_token зберігається на сервері та використовується для перевірки, чи не відкликав користувач доступ додатку. Apple documentation.

Як перевірити статус авторизації?

Перевірка статусу при кожному запуску додатку:

let appleIDProvider = ASAuthorizationAppleIDProvider() appleIDProvider.getCredentialState(forUserID: savedUserID) { state, error in switch state { case .authorized: break // Все добре case .revoked: // Користувач відкликав доступ — розлогінюємо case .notFound: // Перший вхід або дані видалені } } 

Порівняння реалізації на різних платформах

Платформа SDK Flow Отримання токена
iOS AuthenticationServices Нативний (ASAuthorizationController) identityToken (JWT)
Android Немає нативного SDK OAuth 2.0 PKCE через Custom Tab authorization code, обмін на токени
Web Apple JS SDK Redirect/Popup OAuth 2.0 authorization code, обмін на токени

Нативний iOS SDK працює в 3 рази швидше, ніж веб-потік на Android, і не вимагає відкриття браузера. Це знижує затримку при вході на 70% та покращує користувацький досвід.

Типові сценарії та рішення

Сценарій Проблема Рішення
Перша авторизація Email не зберігається на сервері Зберегти email та fullName одразу після авторизації
Повторний вхід Apple не передає email Використовувати збережений email
Відкликання доступу Користувач залишається залогіненим Перевіряти getCredentialState при запуску та розлогінювати

Що входить у роботу з інтеграції

Ми надаємо повний цикл робіт:

  • Аналіз поточної системи аутентифікації та вимог App Store.
  • Проєктування інтеграції: вибір підходу (нативний iOS + серверна верифікація).
  • Реалізація на iOS: налаштування Swift-коду, обробка credential, збереження даних.
  • Серверна частина: верифікація JWT, зберігання relay email, управління refresh token.
  • Інтеграція на Android та Web (опціонально).
  • Тестування всіх сценаріїв: перша авторизація, повторний вхід, revocation.
  • Деплой та моніторинг.
  • Документація та інструкція з експлуатації.
  • Гарантійна підтримка після запуску.

Процес роботи та строки

Наш процес включає етапи від аналітики до підтримки. Етап аналітики займає 1-2 дні, реалізація — 5-10 днів, тестування — 2-3 дні. Загальні строки: від 1 до 2 тижнів залежно від складності та необхідності Android/Web підтримки. За понад 30 виконаних проєктів ми накопичили досвід, який дозволяє уникнути типових помилок і прискорити інтеграцію на 40% порівняно з самостійною реалізацією. Команди економлять до 40% часу на розробку, використовуючи наше рішення.

Гарантуємо відповідність розділу 4.2 App Store Review Guidelines — ваш додаток не отримає rejection через відсутність Sign in with Apple.

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