Авторизация пользователей в 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 или вернитесь к основной документации