Авторизация пользователей в Q-Chat

При простом добавлении JS кода на сайт будет предоставляться только базовая информация о пользователях. Если вы хотите, чтобы операторы видели информацию об авторизованных пользователях, необходимо добавить дополнительные параметры.

Как происходит авторизация?

Мы идентифицируем пользователей по двум параметрам:

authId

Открытый ID пользователя (строка). Он должен быть уникальный для каждого пользователя вашего сайта.

authKey

Специальный ключ-пароль для подтверждения пользователя. Ключ генерируется с помощью вашего секретного ключа, поэтому вы можете быть уверены, что в чат вам пишет именно тот пользователь, которым он представляется.

Способы авторизации

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

  • data-qc-auth-id — укажите ID пользователя
  • data-qc-auth-key — сгенерируйте и укажите ключ подтверждения

Пример:

<script async src="https://q-chat.ru/dist/widget.js" 
        data-qc-api-key="1234567" 
        data-qc-auth-id="123" 
        data-qc-auth-key="wjSh21"></script>

Либо вызовите метод qchatapi.auth('123', 'wjSh21') согласно JS API .

Как сгенерировать authKey?

Ключ авторизации генерируется на основе authId (первого параметра) и вашего секретного ключа, который можно узнать в панели управления в разделе Настройки → Разработчикам.

Ключ генерируется как HMAC-sha256 с вашим секретным ключом от ID пользователя в base64.

Пример NodeJS:

let secret = '12345678';
let userId = '123';
let authKey = createHmac('sha256', secret)
    .update(userId)
    .digest()
    .toString('base64');

Пример PHP:

$secret = '12345678';
$userId = '123';
$authKey = base64_encode(
    hash_hmac('sha256', $userId, $secret, true)
);

Дополнительная информация о пользователе

Обычно после авторизации передают дополнительную информацию о пользователе: Имя, E-mail, телефон и прочие характеристики.

Это можно сделать в методе qchatapi.onReady(), например:

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

qchatapi.onReady(() => {
    qchatapi.setProps({
        email: 'user@mail.ru', 
        phone: '+7-918-123-45-67', 
        name: 'Валерий'
    });
});

Готовы настроить авторизацию?

Изучите больше возможностей JavaScript API или вернитесь к основной документации