JWT-авторизация в виджете
История переписки в виджете хранится в localStorage браузера клиента. Если посетитель зайдет к вам на сайт из другого браузера или устройства, он не увидит предыдущих сообщений. Чтобы это исправить, можно настроить синхронизацию переписки в виджете с помощью уникального идентификатора — User Token.
Для реализации функционала выполните следующие шаги:
1 - Создайте уникальный ключ — secret — в соответствии со стандартом RFC 7519 длиной 256 бит, не менее 32 символов. В нем не должно быть кириллицы и пробелов.
Например, secret может выглядеть так: tye64d8818007570e9fd4e9736da383b0ee124e91e4d44ce852432456df0e986
Будет полезен ресурс jwt.io, он позволяет кодировать идентификатор в токен по стандарту JWT.
2 - Укажите созданный secret в нужном канале связи.
Для этого зайдите в раздел> "Управление" > "Каналы связи" > "Настроить" рядом с нужным каналом > "Настройки интеграции для разработчиков". Изменения применятся автоматически.
![]()
3- Реализуйте на вашем сайте логику генерации идентификатора для посетителя.
Идентификатор должен быть:
- уникален в рамках вашего сайта;
- статичен для посетителя;
- зашифрован по стандартам JWT с использованием secret.
Минимальный набор данных, который мы ожидаем в токене, выглядит так:
payload = {
"id": "123"
}
Поле id обязательно, его значение может состоять из букв латинского алфавита и\или арабских цифр.
Важно: Поле ID должно иметь формат типа "Строка".
- На странице вашего сайта, до начала диалога, передавать в виджет идентификатор с помощью метода
jivo_api.setUserToken("token");
Для удаления текущей переписки из виджета, рекомендуем использовать метод clearHistory.
Пример:
Допустим, у вас на сайте есть личный кабинет: посетитель авторизуется по логину и паролю, и только после авторизации на сайте загружается виджет чата. Вы передали нам secret: X|h"33)Kn%19VejL2~4-5c3!Sm6:%[<,XCg[6=Iun0z, при этом идентификатор вашего посетителя: Egor531
После авторизации посетителя на сайте и загрузки виджета на странице нужно вызвать метод:
jivo_api.setUserToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IkVnb3I1MzEifQ.g7RHwp9z8hifPlhv3VURNHACFFAPpiHz2sOUIn3tRe8");
Указанный токен при декодировании выдаст:
payload = {
"id": "Egor531"
}
Он также будет содержать secret: X|h"33)Kn%19VejL2~4-5c3!Sm6:%[<,XCg[6=Iun0z
Когда посетитель напишет в чат, история переписки загрузится в виджет.
Как тестировать
Проверить, присвоен ли токен посетителю, можно в журнале Webhook-запросов (стоит включить Webhooks перед проверкой) в разделе "Управление" > "Каналы связи" > "Настроить" > "Настройки интеграции для разработчиков".
В каждом событии есть поле "token". Если поле пустое, значит метод jivo_api.setUserToken был вызван некорректно или не был вызван вовсе, либо secret, содержащийся в токене, не совпал с secret, настроенным для канала, по которому был вызван метод.

Работаем 24 часа 7 дней в неделю.
