Общие сведения

Для интерактивной регистрации можно использовать 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Строка

Часовой пояс. Желательно указывать для корректных рассылок писем.
Значение можно получать на клиенте с помощью JavaScript:

Intl.DateTimeFormat().resolvedOptions().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>

Результат

  1. При успешном выполнении метода register  HTTP-сервиса внешней регистрации ExternalRegistration в сервисе Фреш создается новый абонент и новый пользователь, имеющий права владельца этого абонента.
  2. Если при регистрации используется режим Пропустить подтверждение регистрационных данных, то  выполняется редирект 302 на метод завершения регистрации {baseURL}/a/extreg/hs/FastExternalRegistration/CompleteRegistration/{id}, где id – идентификатор приглашения. При этом:
    • если для абонента создается приложение (включен режим Создать приложение), то пользователю выводится страница подготовки приложения, которая показывает надпись о подготовке приложения, периодически проверяет готовность приложения, и при готовности выполняет переход на страницу приложения.
    • если для абонента не создается приложения (режим Создать приложение выключен), то пользователю выводится страница подготовки личного кабинета пользователя, которая показывает надпись о подготовке личного кабинета, периодически проверяет его готовность, и при готовности выполняет переход в личный кабинет пользователя. Адрес личного кабинета берется из параметра ВнешнийАдресЭтогоПриложения витрины, с которой инициирована регистрация (если в сервисе не используются витрины - то из одноименного параметра настроек конфигурации менеджера сервиса).
  3. Если при регистрации не используется режим Пропустить подтверждение регистрационных данных, то выполняется редирект 302 на адрес активации через сервис внешней регистрации (при его отсутствии - на адрес активации по приглашению).

Обработка ошибок

Если указаны параметры редиректов, то производится редирект с кодом 302 на указанный адрес. Если адрес этого редиректа не указан, возвращается исключение с кодом 500 и текстом ошибки. Возможные адреса редиректов:

СитуацияАдрес редиректа
Указанный адрес электронной почты уже используется.userExistsErrorRedirectUrl
В сервисе используется защита от автоматических действия и сервер CAPTCHA определил, что пользователь это робот.userIsRobotRedirectUrl

Прочие ошибки: не указан адрес электронной почты, адрес электронной почты указан не верно и другие возможные ошибки.

Текст ошибки возвращается в параметре строки запроса message и при использовании стандартной страницы регистрации выводится пользователю.

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 и описанием возникших ошибок.