Общие сведения
Для интерактивной регистрации можно использовать HTTP-сервис внешней регистрации - ExternalRegistration.
В интерактивном режиме сервис внешней регистрации работает совместно с сервисом быстрой регистрации - FastExternalRegistration.
Метод register сервиса ExternalRegistration — регистрация пользователей
Для регистрации в сервисе новых пользователей (владельцев новых абонентов) применяется метод register HTTP-сервиса внешней регистрации (ExternalRegistration ).
Для вызова этого метода выполняется POST-запрос следующего вида:
Запрос
POST {baseURL}/a/extreg/hs/ExternalRegistration/register/ Content-Type: application/x-www-form-urlencoded Accept: text/html
Здесь предполагается, что HTTP-сервис внешней регистрации ExternalRegistration опубликован с относительным адресом
/a/extreg
Параметры запроса
Имя | Тип | Обязательный | Описание |
---|---|---|---|
name | Строка | Да | Имя пользователя и абонента |
email | Строка | Да | Адрес электронной почты пользователя |
phone | Строка | Да | Номер телефона пользователя для отправки SMS |
promouser | Строка | Да | Идентификатор настройки внешней регистрации (используется для определения обслуживающей организации, вида создаваемого приложения, параметров подписки на тариф сервиса, назначаемой созданному абоненту сервиса и др.) |
promo | Число | Идентификатор сайта. Влияет на отображение страницы регистрации и шаблоны отправляемых писем, если они переопределены для указанного идентификатора сайта. | |
publicid | Строка | Публичный идентификатор. Может использоваться для заполнения свойств абонента (например, для автоматического заполнения свойств организации по ИНН) | |
scid | Строка | Идентификатор обслуживающей организации. | |
unknownErrorRedirectUrl | Строка | Адрес редиректа при ошибке регистрации. Если не указан, то вместо редиректа будет возвращаться 500-я ошибка с описанием ошибки в теле ответа. | |
userExistsErrorRedirectUrl | Строка | Адрес редиректа при указании не уникального адреса регистрации. Если не указан, то вместо редиректа будет возвращаться 500-я ошибка с описанием ошибки в теле ответа. | |
userExistsErrorRedirectMethodPost | Булево | Выполнять метод POST при перенаправлении на страницу ошибки при не уникальном адресе регистрации. При этом все параметры, полученные в запросе /register также будут переданы в POST-запрос по указанному адресу. | |
timezone | Строка | Часовой пояс. Желательно указывать для корректных рассылок писем.
Если параметр не будет заполнен, и запрос будет выполнен из браузера, то будет возвращена страница с попыткой заполнения параметра автоматически. | |
adsrc | Число | Идентификатор источника интереса | |
sendemail | Булево | Признак отправки уведомления о регистрации по электронной почте. | |
sso | Строка | Служебный JWT-токен SSO провайдера аутентификации сервиса. Токен заполняется из входящих параметров при регистрации с использованием стороннего провайдера аутентификации. | |
userinfo | Структура | Информация о пользователе, аналогичная выдаваемой провайдером аутентификации. Используется для заполнения свойств абонента. | |
access_token | Строка | Токен доступа стороннего провайдера аутентификации. Может запоминаться в свойствах приглашения при регистрации через стороннего провайдера. Используется для заполнения свойств абонента. |
Замечание
Если параметр scid
указан, то обслуживающая организация для регистрируемого абонента назначается по следующим правилам.
Если идентификатор, указанный в значении параметра scid
:
- назначен ровно одной обслуживающей организации, то регистрируемый абонент прикрепляется к этой обслуживающей организации;
- назначен нескольким обслуживающим организациями, то:
- если у одной из этих обслуживающей организаций имеется признак Основная обслуживающая организация, то регистрируемый абонент прикрепляется к этой обслуживающей организации;
- иначе используется обслуживающая организация из настройки регистрации;
- не назначен никакой обслуживающей организации, то используется обслуживающая организация из настройки регистрации.
Замечание
При регистрации пользователя без абонента (не является владельцем или пользователем абонента) регистрация проходит как если бы не было пользователя. Создаётся приглашение для регистрации с указанием существующего пользователя.
При активации приглашения обновляется логин, имя и телефон пользователя.
Дополнительные параметры при использовании промокодов
Имя | Тип | Обязательный | Описание |
---|---|---|---|
promocode
| Строка | Промокод | |
subid | Строка | Дополнительная информация о промокоде (например, метод его распространения) | |
promocodeNotFoundRedirectUrl | Строка | Да | Адрес редиректа при ошибке отсутствия промокода. |
promocodeBlockedRediretUrl | Строка | Да | Адрес редиректа при ошибке блокировки промокода. |
promocodeExpiredRedirectUrl | Строка | Да | Адрес редиректа при ошибке истечения срока использования промокода. |
promocodeActivationNumberIsExhaustedUrl | Строка | Да | Адрес редиректа при ошибке исчерпания количества активаций промокода. |
Дополнительные параметры при использовании защиты от автоматических действий
При использовании в сервисе защиты от автоматических действий среди параметров запроса к HTTP-сервису внешней регистрации может быть необходимо указывать параметр, значение которого возвращается сервисом проверки CAPTCHA (различения людей и роботов). Для сервиса Google reCAPTHA имя этого параметра g-recaptcha-response . Без указания этого параметра в запросе к HTTP-сервису внешней регистрации в регистрации пользователя может быть отказано.
Также в запросе к HTTP-сервису внешней регистрации указывается адрес редиректа при определении что пользователь это робот.
Имя | Тип | Обязательный | Описание |
---|---|---|---|
g-recaptcha-response | Строка | Строка, возвращенная сервисом проверки CAPTCHA | |
userIsRobotRedirectUrl | Строка | Адрес редиректа при определении что пользователь это робот |
Пример страницы для выполнения запроса
<form action="https://1cfresh.com/a/extreg/hs/ExternalRegistration/register" method="post" onsubmit="document.getElementById('timezone').value = Intl.DateTimeFormat().resolvedOptions().timeZone; return true;" novalidate="novalidate"> <label>Ваше имя:</label> <input name="name"/> <label>Ваш e-mail:</label> <input name="email"/> <label>Ваш телефон:</label> <input name="phone"/> <input type="hidden" name="promouser" value="ExternalRegistration"/> <input type="hidden" name="publicid"/> <!-- Можно использовать для указания ИНН --> <input type="hidden" name="scid"/> <!-- Можно использовать для указания идентификатора обслуживающей организации --> <input type="hidden" name="timezone" id="timezone"/> <input type="hidden" name="unknownErrorRedirectUrl" value="#msgUnknownError"/> <input type="hidden" name="userExistsErrorRedirectUrl" value="#msgEmailExists"/> <input type="submit" value="Начать работу"/> </form>
Результат
- При успешном выполнении метода register HTTP-сервиса внешней регистрации ExternalRegistration в сервисе Фреш создается новый абонент и новый пользователь, имеющий права владельца этого абонента.
- Если при регистрации используется режим Пропустить подтверждение регистрационных данных, то выполняется редирект 302 на метод завершения регистрации {baseURL}/a/extreg/hs/FastExternalRegistration/CompleteRegistration/{id}, где id – идентификатор приглашения. При этом:
- если для абонента создается приложение (включен режим Создать приложение), то пользователю выводится страница подготовки приложения, которая показывает надпись о подготовке приложения, периодически проверяет готовность приложения, и при готовности выполняет переход на страницу приложения.
- если для абонента не создается приложения (режим Создать приложение выключен), то пользователю выводится страница подготовки личного кабинета пользователя, которая показывает надпись о подготовке личного кабинета, периодически проверяет его готовность, и при готовности выполняет переход в личный кабинет пользователя. Адрес личного кабинета берется из параметра ВнешнийАдресЭтогоПриложения витрины, с которой инициирована регистрация (если в сервисе не используются витрины - то из одноименного параметра настроек конфигурации менеджера сервиса).
- Если при регистрации не используется режим Пропустить подтверждение регистрационных данных, то выполняется редирект 302 на адрес активации через сервис внешней регистрации (при его отсутствии - на адрес активации по приглашению).
Обработка ошибок
Если указаны параметры редиректов, то производится редирект с кодом 302 на указанный адрес. Если адрес этого редиректа не указан, возвращается исключение с кодом 500 и текстом ошибки. Возможные адреса редиректов:
Ситуация | Адрес редиректа |
---|---|
Указанный адрес электронной почты уже используется. | userExistsErrorRedirectUrl |
В сервисе используется защита от автоматических действия и сервер CAPTCHA определил, что пользователь это робот. | userIsRobotRedirectUrl |
Прочие ошибки: не указан адрес электронной почты, адрес электронной почты указан не верно и другие возможные ошибки. Текст ошибки возвращается в параметре строки запроса | unknownErrorRedirectUrl |
Если при подготовке приложения произошла ошибка, выполняется повтор попытки. Если приложение не удалось создать после 3 попыток, то в браузер пользователя выводится сообщение об ошибке подготовки приложения с указанием причины, если она известна.
Если оказалось, что подготовленное приложение требует наличия подписки на тариф сервиса, отсутствующей у абонента, то в браузер пользователя выводится сообщение о том, что приложение недоступно без оформления подписок на тарифы.
Метод bind сервиса ExternalRegistration — привязка пользователей
Для сопоставления (привязки) пользователя стороннего провайдера аутентификации и учетной записи существующего пользователя сервиса применяется метод bind
HTTP-сервиса внешней регистрации ExternalRegistration
.
Для вызова этого метода выполняется POST-запрос следующего вида:
Запрос
POST {baseURL}/a/extreg/hs/ExternalRegistration/bind/ Content-Type: application/x-www-form-urlencoded Accept: text/html
Здесь предполагается, что HTTP-сервис внешней регистрации ExternalRegistration опубликован с относительным адресом
/a/extreg
Параметры запроса
Имя | Тип | Обязательный | Описание |
---|---|---|---|
login | Строка | Имя (логин) пользователя | |
password | Строка | Пароль пользователя | |
sso | Строка | Да | Служебный JWT-токен SSO с параметрами привязки, передаваемый провайдером аутентификации сервиса. |
return_to | Строка | Адрес возврата | |
cmd | Строка | Команда выполнения перехода на адрес возврата. В случае, если для параметра return_to нужно выполнить метод POST c передачей полученных в форму привязки параметров, нужно указать значение параметра cmd=form. |
Если параметры return_to и/или cmd не заданы в параметрах запроса, используются значения из соответствующих полей JWT-токена SSO OpenID-провайдера аутентификации сервиса.
Параметр return_to должен содержать адрес, с разрешенным для перехода именем сайта. Разрешенные имена сайта задаются администратором сервиса.
Обработка ошибок
В следующих случаях возвращается ответ с HTTP-кодом состояния 400 и текстом ошибки:
- не указан параметр sso
- если для стороннего провайдера аутентификации не разрешена привязка
- если в поле scope JWT-токена SSO провайдера аутентификации не найдена строка bind
- не указано корректное значение адреса возврата ( return_to ).
Вывод окна привязки
Если при вызове не был указан параметр login , выводится окно привязки (по шаблону текстов Страница привязки).
Результат выполнения
После успешного выполнения привязки существующий пользователь сервиса сможет входить в приложения сервиса, используя аутентификацию стороннего провайдера аутентификации. Сразу после привязки пользователь переходит по адресу возврата, указанному в параметре привязки return_to JWT-токена SSO, или параметра запроса, если он указан.
Сервис FastExternalRegistration
Сервис позволяет зарегистрировать пользователя без подтверждения регистрационных данных.
Запрос
GET {baseURL}/a/fastreg/hs/FastExternalRegistration/ComleteRegistration/{registration_code} Content-Type: application/x-www-form-urlencoded Accept: text/html
Здесь предполагается, что HTTP-сервис
FastExternalRegistration
опубликован с относительным адресом
/a/fastreg
Параметры запроса
Имя | Описание | Тип |
---|---|---|
registration_code | Идентификатор приглашения для регистрации | Строка |
В процессе ожидания производится редирект на страницу подготовки приложения или личного кабинета, если приложение не создается.
После завершения подготовки приложения или личного кабинета производится редирект в приложение или личный кабинет и осуществляется вход пользователя без ввода данных регистрации. Также на почту пользователя отправляется письмо с данными регистрации.
В случае ошибок возвращается ответ с HTTP-кодом состояния 500 и описанием возникших ошибок.