Технология единого входа (SSO)

Технология единого входа (SSO) Sender позволяет передавать в чат информацию о пользователе. Это означает, что авторизированные пользователи Вашего сайта могут общаться в чате от своего имени.

Для этого необходимо:

  1. В административном разделе "Настройка API" ввести "Секретный ключ".
  2. Изменить или указать серетный ключ можно здесь
  3. В код вставки виджета при вызове метода SenderWidget.init(options) в объект options добавить сформированный параметр auth (см.подробнее)

Формирование значения параметра auth

Параметр auth формируется из 3-х частей:

  1. Информация о пользователе**
  2. Время unixtime по UTC
  3. Сигнатура (цифровая подпись)

Эти параметры строки auth должны быть разделены _. Итоговая строка должна иметь вид:

eyJpZCI6IjEyMyIsIm5pY2siOiJEaW1hIn0=_1373454609_0a76ca05a51ee9da5053b5fe
//"USERINFO_TIME_SIGNATURE"

Формирование массива данных о пользователе (USERINFO)

Для того чтобы передать в чат данные о клиенте необходимо сформировать JSON

{
 "id": "18",
 "name": "Oleg",
 "photo": "https://s.sender.mobi/l/u/auth_cdabb8f8-a65a-4319-998b-095e67e0eac1/1473780962_X2t.png",
 "data": [
    {"key": "phone", "val": "380995462626", "title": "Номер мобильного"}
  ]
}
Параметр Тип Обязательный Описание
id String + Уникальный идентификатор клиента на вашем сайте. Используется для аутентификации клиента и хранения истории переписки с этим клиентом.
name String - Имя клиента, используется для отображения в чате
photo String - Фото клиента, используется для отображения в чате
data String - Массив объектов для передачи дополнительных параметров. Каждый объект должен содержать поля key и val.

Далее необходимо кодировать эту JSON строку используя алгоритм Base64.

base64_encode($json)

Формирование сигнатуры (SIGNATURE)

Сигнатура формируется как md5 хэш от склеенной строки "Секретный ключ"+"Информация о пользователе"+"Время":

md5(SECRETKEY+USERINFO+TIME)

Пример формирования значения параметра auth на PHP

Формирование строки auth:

$json = [id => '...']; // передаваемые данные
$time        = time();
$secret      = "SECRETKEY"; // Секретный ключ, который Вы ввели в административной панели сайта.

$user_base64 = base64_encode( json_encode($json) );
$sign        = md5($secret . $user_base64 . $time);
$auth        = $user_base64 . "_" . $time . "_" . $sign;

Добавить в объект options значение параметра auth в метод SenderWidget.init(options) в коде вставки виджета:

  SenderWidget.init({
   auth: auth,
   companyId: "COMPANY_ID"
  });

Если вы открываете чат по ссылке то парамет auth можно передать в виде GET параметра.

Пример формирования значения параметра auth на Node.js

Формирование строки auth:

var crypto = require('crypto');

var jsonData = { id: '...' }; // передаваемые данные
var time = Math.floor(new Date().getTime() / 1000);
var secret = 'SECRETKEY'; // Секретный ключ, который Вы ввели в административной панели сайта.

var userBase64 = new Buffer(JSON.stringify(jsonData)).toString('base64');
var sign = crypto.createHash('md5')
  .update(secret + userBase64 + time)
  .digest('hex');

var auth = userBase64 + '_' + time + '_' + sign; // строка, которую нужно подставить в параметр auth

Добавить в объект options значение параметра auth в метод SenderWidget.init(options) в коде вставки виджета:

  SenderWidget.init({
   auth: auth,
   companyId: "COMPANY_ID"
  });