Перейти к содержанию

OTP авторизация

OTP (One-time password) — это механизм проверки принадлежности номера телефона пользователю, который совершает некоторые действия в системе.

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

{% hint style="info" %} Вам нужно предварительно обратиться в службу поддержки по e-mail, чтобы вам зарегистрировали OAuth 2 приложение. Посмотрите как это сделать здесь. {% endhint %}

Шаг 1. Получение OTP на номер телефона

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

curl -v -H 'Origin:http://mydomain.com' -XGET 'https://oauthv2.gbooking.ru/sms/code?businessID=4000000006762&phone_country=7&phone_area=985&phone_number=3596605'

Укажите в запросе свой номер телефона.

В ответ придет json, в котором будет параметр token. Так же, на указанный телефон должна прийти смс с кодом. Оба эти значения пригодятся в следующем запросе.

Если вы работаете с сетью бизнесов, то вместо параметра businessID используйте networkID. В данные параметры вы можете взять в настройках бизнеса в Бэкофис (параметр networkID одинаков для любого бизнеса сети).

Пример ответа:

{
  "token": "eac0f081-f3e7-44a2-830a-4e86106a8a29"
}

Шаг 2. Подтверждение OTP

При использовании OAuth2 сервера запрос на подтверждение OTP выглядит так:

curl 'https://oauthv2.gbooking.ru/sms/verify' -v -H 'Origin:http://mydomain.com' -H 'Content-Type:application/json' -XPOST -d '{
   "token":"c18edfed-7a10-4205-887e-a87cbbc78e9a",
   "code":"22834",
   "client":"54ae263ec469881d068b4567"
}'
  • token — параметр, полученный из предыдущего запроса
  • code — код, полученный в смс на предыдущем шаге
  • client — идентификатор приложения в OAuth

Пример ответа:

{
  "auth_user": "5d5eb047356cbb7be678db23",
  "user": "55d98d643ef4d79e909cdbfc",
  "token": "b2bfa760023d2e7e4ec210925e5624097b68e8c9"
}