Как работать с авторизацией пользователей на Q-Chat

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

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

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

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

  • 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: 'Валерий'});
});