Перейти к основному содержимому

Как настроить вход покупателя для отзывов

Как включить аутентификацию покупателя в виджетах 2.0 через JWT-токен вашего сайта или одноразовый код на email

Включите аутентификацию, если оставлять отзывы, вопросы и ответы должны только покупатели, которые вошли на ваш сайт (JWT) или подтвердили email одноразовым кодом (OTP). С JWT данные покупателя попадают в отзыв из токена, и форма не просит их заполнять.

Что понадобится​

  • Менеджер Aplaut включил аутентификацию покупателей для вашей компании. Без этого сервер не проверяет токен.
  • Секретный ключ, которым подписываются токены. Он нужен и для JWT, и для OTP.
  • Company ID из раздела Настройки → Разработчикам (роль Администратор). Раньше это поле называлось Store ID.
  • Доступ к коду сайта или к скрипту провайдера в разделе Виджеты.

Шаг 1. Задайте секретный ключ​

Роль Менеджер или Администратор.

  1. Откройте Настройки → Настройки виджетов и выберите вкладку Widgets 1.0.
  2. В блоке Аутентификация в поле Способ аутентификации выберите Single Sign-On (SSO).
  3. В поле Секретный ключ (secret_key) введите ключ и нажмите Сохранить.

Раздел Настройки виджетов помечен как устаревший, но ключ для виджетов 2.0 пока задаётся здесь.

Шаг 2. Включите стратегию аутентификации​

Задайте стратегию в widgetsConfig.general.authStrategy вызова aplaut.init: в коде сайта или в скрипте провайдера. В разделе Виджеты этой настройки нет.

aplaut.init(access_token, {
widgetsConfig: {
general: { authStrategy: "jwt" },
},
});

Пока токен не передан, кнопка Написать отзыв называется Войти. Поля имени и email в форме не показываются.

Шаг 3. Сформируйте токен на сервере​

Подписывайте токен на сервере: секретный ключ не должен попадать в код страницы. Подойдёт любая JWT-библиотека с алгоритмом HS256.

ПараметрТипОбязательныйОписание
issstringдаCompany ID
external_idstringхотя бы одно из трёхID покупателя на вашем сайте, как в заказах, которые вы передаёте в Aplaut
emailstringхотя бы одно из трёхEmail покупателя
phonestringхотя бы одно из трёхТелефон покупателя
expnumberнетСрок действия, Unix time в секундах
name, picture, location_namestringнетИмя, аватар и город: подставляются в отзыв
custom_attributesobjectнетПроизвольные атрибуты покупателя
order_numberstringнетНомер заказа для метки «Проверенная покупка»
server.js
const jwt = require("jsonwebtoken");

const token = jwt.sign(
{ iss: COMPANY_ID, external_id: user.id, email: user.email, name: user.name },
SECRET_KEY,
{ algorithm: "HS256", expiresIn: "4h" }
);

Шаг 4. Передайте токен виджетам​

Вызовите aplaut.setConsumer на каждой странице с виджетами, если покупатель вошёл на сайт. Метод можно вызывать сразу после загрузчика: команда встанет в очередь.

<script>
aplaut.setConsumer({ token: "<JWT>" });
</script>

При выходе покупателя вызовите aplaut.setConsumer({ token: null }).

Для ссылок из писем токен можно передать в адресе страницы: ?consumer_token=<JWT>. Токен в адресе попадает в историю браузера и логи, поэтому для таких ссылок ставьте короткий exp.

Шаг 5. Обработайте вход по кнопке​

Зарегистрируйте функцию, которая открывает вход на вашем сайте. Виджеты вызывают её перед каждым открытием формы отзыва, вопроса или ответа, даже если токен уже передан. На мобильных устройствах функция вызывается и перед открытием других выдвижных панелей, поэтому для вошедшего покупателя она должна сразу завершаться.

aplaut.setAuthParams({
callback: () =>
new Promise((resolve, reject) => {
if (isLoggedIn()) {
aplaut.setConsumer({ token: authToken });
return resolve();
}
showLoginModal()
.then((token) => {
aplaut.setConsumer({ token });
resolve();
})
.catch(reject);
}),
});

После resolve() виджет проверяет токен ещё раз и открывает форму. После reject() или исключения форма не открывается. Без функции и без токена кнопка Войти ничего не делает.

Если JWT недоступен, переключите покупателя на одноразовый код: aplaut.setAuthStrategy("otp").

Проверка результата​

  1. Откройте страницу товара, не входя на сайт. Кнопка в виджете отзывов называется Войти, клик по ней открывает вход на вашем сайте.
  2. Войдите на сайт и нажмите Написать отзыв. Форма открывается без полей имени и email.
  3. Отправьте тестовый отзыв и найдите его в разделе Отзывы личного кабинета: у автора стоят данные из токена.

Смотрите также: справочник JS API виджетов, как включить проверку покупки и кнопку «В корзину».