Два способа получить недостающий claim
Внутри входа. КаталогVeriqa:ScopesClaims
задаёт каждому claim уровень: Required — вход без него не завершается; Optional — пользователя
спрашивают, и он может пропустить; IfAvailable — выдаётся, только если его уже дал канал или он
есть в хранилище собранных claims. Приложение поднимает уровень для себя через ClaimLevels своей
записи клиента, запрос — параметром claims. Чего не дал канал,
Veriqa добирает до выдачи токенов, в той же транзакции: телефон — запросом в канале
(Номер телефона), email — кодом, ссылкой или письмом от пользователя
(ClaimCompletionEmailMethods записи клиента), поле
каталога с Completion — своей формой.
Новым authorize-запросом. Когда потребность возникает позже, приложение запускает ещё один вход
с теми scope, которые теперь нужны:
- Первый вход — минимальный набор:
subи то, что даёт канал поscope=profile. Учётная запись уже создана, пользоваться сервисом можно. - Понадобился контакт — перед действием, которому он нужен, приложение запускает новый
authorize-запрос с
scope=emailилиphone. Пользователь подтверждает в мессенджере, и claim приезжает вid_token. - Понадобился канал для уведомлений — тот же приём со
scope=channel: см. привязку канала.
Почему данные верифицированы
Разница с анкетой в том, кто источник значения. Адрес, введённый в форму, — утверждение пользователя; адрес, приехавший claim-ом с канала Email, — следствие того, что человек подтвердил вход именно из этого ящика. Проверять его отдельным письмом уже не нужно. То же с тем, что добирает Veriqa: номер, переданный в канале, и адрес, подтверждённый кодом, приезжают сphone_number_verified / email_verified, а поле формы — это то, что пользователь ввёл.
Хороший момент для обогащения
Удобнее всего достраивать профиль там, где пользователь и так подтверждает действие: перед платежом, сменой реквизитов, выдачей доступа. Подтверждение и сбор данных сливаются в одно действие вместо двух — подробнее в step-up.Запоминание собранного
По умолчанию после входа Veriqa не хранит ничего: каждый вход начинается с того, что даёт канал, а собранное Veriqa живёт столько же, сколько транзакция. ПоэтомуOptional claim спрашивается при
каждом входе — пользователь, пропустивший его вчера, сегодня видит вопрос снова.
Это меняет опция — хранилище собранных claims. С
ним Veriqa помнит по sub, что собрала сама и от каких Optional claims пользователь отказался, и
спрашивает только то, чего ещё нет. Отклонённый Optional claim больше не спрашивается, пока его
уровень не поднимут до Required. Сохранённое значение при каждом входе
проверяется по действующим правилам: значение, не проходящее ужесточённое правило поля, и адрес,
полученный способом, который текущее приложение не допускает, собираются заново.
Что знать до включения:
- Записи ведутся по
sub, а у одного человека в каждом канале свойsub. Пользователя, вошедшего через Telegram, а потом через WhatsApp, во втором канале спросят снова: связывания учётных записей между каналами Veriqa не делает. - Это запись о собранном, а не копия вашего профиля. Veriqa её не редактирует и не
синхронизирует с вашим приложением. Токен со значением из хранилища несёт и
updated_at— самое позднее время, когда Veriqa собрала значение, которое есть в токене, в секундах от эпохи. Если пользователь с тех пор поменял данные у вас, оставьте ваши: не перезаписывайте профиль из токена при каждом входе, сравнивайтеupdated_atсо временем своего изменения. - Хранилище общее для всех приложений тенанта — и удаление тоже.
Что остаётся на вашей стороне
- решение, какие данные нужны и когда — уровни в каталоге и в запросе; другой модели профиля Veriqa не знает;
- ваш профиль — claim, приехавший в токене, дальше ваши данные. Хранилище собранных claims, если вы его включили, держит только собранное Veriqa, чтобы не спрашивать повторно, — это не каталог пользователей;
- политика повторного запроса — сколько живёт полученное значение в вашем приложении и когда спрашивать снова, определяете вы;
- стирание — когда пользователь удаляет аккаунт, удалите и его записи из хранилища собранных claims: иначе Veriqa об удалении не узнает.