Как сделать регистрацию и авторизацию через мобильный номер

Аватарка пользователя Станислав Романов

Рассказали, как сделать регистрацию и авторизацию пользователей по мобильному номеру с инструментами SMS API от МТС Exolve и API от Twilio.

Для регистрации и авторизации пользователей через мобильный номер потребуется сделать несколько вещей:

  1. Создать интерфейса пользователя. Для этого делаем форму, в которую пользователь введет номер мобильного. Если вам нужны еще какие-то данные, можно добавить и другие поля.
  2. Сделать верификацию мобильного номера. Проще всего — через одноразовый SMS-код подтверждения. В этом помогают сторонние сервисы, например, API-платформы, при большом количестве запросов на авторизацию это удобнее, чем возиться с кодами подтверждения самому.
  3. Обеспечить хранение данных. Здесь есть два пути — использовать облако или создать свою базу данных. Если у вас сложная структура данных и мощные запросы, база данных удобнее. Если масштабируемость и доступность важнее, то стоит выбрать облако. При желании можно скомбинировать оба варианта: основные данные хранить в базе, а облако использовать для хранения более объемных и медленно меняющихся данных.
  4. После того как пользователь зарегистрировался, надо создать его учётную запись. Нужен автоматический порядок действий, так что готовьтесь писать код.
  5. Предусмотреть возможность авторизации по мобильному. Здесь тоже подойдет одноразовый пароль. Впрочем, можно и без этого. Если у вас нет ничего сверхважного, хватит авторизации по паролю пользователя, который он сам сделает при регистрации.
  6. Настроить управление сеансами, чтобы пользователя не выбрасывало во время сессии.
  7. Продумать безопасность. Стоит ограничить количество попыток входа, решить, как защищать данные и пр.

Сейчас много сервисов, предлагающих API для SMS-авторизации. Проблема в том, что вряд ли удастся найти что-то универсальное, чтобы работало в России и на зарубежном рынке одновременно. Можно рассмотреть вариант интеграции с парой сервисов, например, через SMS API от МТС Exolve внутри России и таким же API от Twilio для тех, кто авторизуется не с российским номером. Прикрутить к сайту что один сервис, что два, большого значения не имеет.

Порядок примерно один:

  1. Зарегистрируйтесь на выбранном сервисе и получите API-ключ.
  2. Настройте HTTP запросы, используя удобный для вас язык программирования. Обычно это POST или GET запросы, которые вы можете отправить на URL API сервиса.
  3. Создайте функцию или метод на своем сайте, который будет отправлять SMS-коды на указанные номера телефонов через API сервиса. Не забудьте про текст сообщения и номер получателя.
  4. Настройте обработку ответа от API сервиса, чтобы узнать, был ли SMS-код успешно отправлен или произошла ошибка. Ну и задайте порядок действий для обоих вариантов.
  5. На вашем сайте создайте форму, где пользователь будет вводить свой номер мобильного телефона для авторизации.

Сложности могут возникнуть в распознавании номеров. Никто не хочет вручную делить, кого куда, нужно автоматизировать процесс. Посмотрите пример ниже, как это можно сделать. Для начала стоит взять библиотеку для определения страны номера телефона или берем для этой же цели сторонний API, после чего создать функцию выбора сервиса.

Функция будет выглядеть так (в примере Python):

			def select_sms_service(phone_number):
        # Предположим, что у вас есть функция для определения страны номера по его международному коду
        country_code = get_country_code(phone_number)
        # Ваше правило для определения, какие страны относятся к России, а какие - к другим странам
        if country_code == "RU":  # ISO код для России
            return "sms_service_ru"  # Вернуть идентификатор или ссылку на смс-сервис для России
        else:
            return "sms_service_other"  # Вернуть идентификатор или ссылку на смс-сервис для других стран
# Пример использования функции
phone_number = "+79123456789"  # Здесь должен быть номер телефона, который ввел пользователь
selected_service = select_sms_service(phone_number)
 
# Теперь у вас есть идентификатор или ссылка на нужный смс-сервис, который можно использовать для отправки SMS-кода
		

Понятно, что это только пример. Реализация будет зависеть от используемого языка программирования, доступных API для определения страны номера, а также вашей системы управления SMS-сервисами.

Инструменты
541