Розробка авторизації через номер телефону з SMS-кодом

Розробка авторизації через номер телефону з SMS-кодом SMS-авторизація виглядає просто: запросив код, отримав SMS, ввів, увійшов. На практиці тут більше edge cases, ніж у будь-якому іншому методі входу. Невірний формат номера для однієї країни, ліміти провайдера SMS, застарілі коди через затримку

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка авторизації через номер телефону з SMS-кодом
Середній
від 1 дня до 3 днів

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

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

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

  • 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

Розробка авторизації через номер телефону з SMS-кодом

SMS-авторизація виглядає просто: запросив код, отримав SMS, ввів, увійшов. На практиці тут більше edge cases, ніж у будь-якому іншому методі входу. Невірний формат номера для однієї країни, ліміти провайдера SMS, застарілі коди через затримку доставки, підбір кодів без rate limiting — все це зустрічається в продакшені. За 5+ років ми реалізували SMS-авторизацію в 30+ проектах і знаємо, як обійти кожен підводний камінь.

Введення та валідація номера телефону

Головна проблема — формати номерів. Український номер може бути введений як +38 099 123-45-67, 380991234567, 099 123-45-67. Сервер повинен приймати все це і нормалізувати у формат E.164 (+380991234567). На клієнті — використовувати бібліотеку libphonenumber (Google), вона ж використовується в Android системно. Для iOS — PhoneNumberKit (Swift-обгортка над libphonenumber).

Поле введення номера: keyboardType = .phonePad (iOS) / inputType="phone" (Android). Не numberPad — тоді немає кнопки +. Форматування номера в реальному часі (маска) реалізуємо через UITextField delegate / TextWatcher — користувач бачить +38 (099) 123-45-67 по мірі введення, хоча зберігається E.164.

Вибір коду країни — або popup з прапорами та пошуком (повноцінний компонент, 3-5 днів роботи), або жорстко задана країна, якщо додаток працює тільки в одному регіоні.

OTP-екран: введення коду

Кастомний OTP-input — 4 або 6 окремих TextField-ів з автоматичним переходом фокусу при введенні кожної цифри. На iOS textContentType = .oneTimeCode включає автопідстановку з SMS — iOS парсить SMS і пропонує код над клавіатурою. Це обов'язкова функціональність, користувачі очікують її.

На Android SMS автоматично читається через SmsRetriever API (без запиту дозволів) або SMS User Consent API (з запитом). SmsRetriever вимагає спеціального хеша в тексті SMS, який генерується на основі підпису APK. При зміні keystore або debug/release build — хеш змінюється, SMS не читається автоматично.

// Android — SmsRetriever val client = SmsRetriever.getClient(context) val task = client.startSmsRetriever() task.addOnSuccessListener { // Реєструємо BroadcastReceiver на отримання SMS } 

Таймер зворотного відліку для повторного відправлення — стандарт 60 секунд. Без нього користувачі спамлять кнопку «Відправити знову» і засмічують чергу SMS-провайдера. Кнопка недоступна до закінчення таймера, потім активується.

Який провайдер SMS обрати для українського ринку?

Вибір впливає на доставляємість і вартість. Firebase Auth — безкоштовний ліміт, проста інтеграція, але не працює без Google Services, і в Україні спостерігаються перебої. Twilio Verify — висока доставляємість глобально, але дорожчий за українських провайдерів і незручний для гривневих рахунків. SMS.ru / SMSC / Devino — низька ціна для України, гривневі рахунки, але немає SDK, тільки HTTP API. Для українського ринку найчастіше обирають SMS.ru або SMSC з власним backend-сервісом: клієнт ніколи не знає API-ключ провайдера, запит коду йде на ваш сервер, сервер відправляє SMS. На backend — rate limiting: не більше 3 кодів на номер на годину, не більше 5 спроб введення на один код.

Що робити, якщо SMS не доходить?

Перш за все перевірте rate limits провайдера — часто проблеми в перевищенні лімітів. Друге — передбачте альтернативний канал: голосовий дзвінок з кодом (TTS). Третє — збільште TTL коду до 10 хвилин і покажіть таймер зворотного відліку, щоб користувач не натискав повторно. В крайньому випадку — підключіть резервного провайдера. У нашій практиці це вирішувало проблему у 95% випадків.

Безпека: що обов'язково

  • Код зберігається на сервері в bcrypt-хеші, не у відкритому вигляді.
  • TTL коду: 5-10 хвилин, після закінчення — код недійсний.
  • Після 3 невірних спроб введення — блокування сесії, потрібно запросити новий код.
  • Rate limiting по IP та по номеру телефону — захист від перебору та дорогої SMS-спам атаки.

Що входить в роботу

  • UI екранів: введення номера з маскою, OTP-поле з автопідстановкою (iOS/Android)
  • Інтеграція з SMS-провайдером (Firebase, Twilio, SMS.ru, SMSC) через ваш backend
  • Налаштування rate limiting та безпеки на сервері
  • Розробка альтернативного каналу (голосовий дзвінок) — опціонально
  • Тестування edge cases: невалідний номер, прострочений код, відсутність SMS, зміна мережі
  • Документація API та конфігурацій

Строки та досвід

Строки: від 1 до 2,5 тижнів залежно від кількості провайдерів та складності UI. Більше 5 років на ринку мобільної розробки, виконано 30+ проектів з авторизацією. Використовуємо перевірені рішення — Firebase, Twilio, власні backend-мікросервіси. Гарантуємо безпеку згідно з OWASP Mobile Top 10.

Щоб обговорити деталі вашого проекту та отримати консультацію, зв'яжіться з нами — підберемо оптимальне рішення під ваш стек та регіон.