JWT-авторизация в виджете

История переписки в виджете хранится в localStorage браузера клиента. Если посетитель зайдет к вам на сайт из другого браузера или с другого устройства, он не увидит предыдущих сообщений. Чтобы это исправить, можно настроить синхронизацию переписки в виджете с помощью уникального идентификатора — User Token.

Для реализации функционала потребуется выполнить следующие шаги:

1. Создать уникальный ключ — secret — в соответствии со стандартом RFC 7519 длиной 256 бит.

Например, secret может выглядеть так: tye64d8818007570e9fd4e9736da383b0ee124e91e4d44ce852432456df0e986

Будет полезен ресурс jwt.io, он позволяет кодировать идентификатор в токен по стандарту JWT.

2. Отправить созданный secret с почты администратора вашего аккаунта Jivo на info@jivosite.com В письме нужно указать для какого канала/каналов требуется его установить.

3. Реализовать на вашем сайте логику генерации идентификатора для посетителя.

Идентификатор должен быть:

  • уникален в рамках вашего сайта;

  • статичен для посетителя;

  • зашифрован по стандартам JWT с использованием secret.

Минимальный набор данных, который мы ожидаем в токене выглядит так:

payload = { 
  "id": "123"
}

Поле id обязательно, его значение может состоять из букв латинского алфавита и\или арабских цифр.

4. На странице вашего сайта, до начала диалога, передавать в виджет идентификатор с помощью метода jivo_api.setUserToken("token");

Пример:

Допустим, у вас на сайте есть личный кабинет: посетитель авторизуется по логину и паролю, и только после авторизации на сайте загружается виджет чата. Вы передали нам secret: X|h"33)Kn%19VejL2~4-5c3!Sm6:%[<,XCg[6=Iun0z, при этом идентификатор вашего посетителя: Egor531

После авторизации посетителя на сайте и загрузки виджета на странице нужно вызвать метод:

jivo_api.setUserToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IkVnb3I1MzEifQ.9yF0u5exVfR58raGCbtMdunHtrq8dNPKih3sdoF90YU");

Указанный токен при декодировании выдаст:


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 дней в неделю.