Перейти к содержанию

Идентификация авторизованных клиентов, версия 1.0

Для передачи информации об авторизованном на сайте посетителе и дальнейшего её показа в интерфейсе оператора сервиса Webim необходимо добавить на страницы сайта javascript-код следующего вида:

webim_visitor = {
    < имя поля >: < значение >,
    < имя поля >: < значение >,
    < имя поля >: < значение >, ...
    crc: HASH
};

Пример:

webim_visitor = {
    id: '12345',
    display_name: 'Евгений',
    phone: '+7 812 3855337',
    email: 'support@webim.ru',
    crc: 'ccbb082afba5022de58d8eeb7d5599ac'
};

Внимание!

Удалите из этого примера type='text/javascript', если на сайте HTML5.

N.B.

Данный пример и данная контрольная сумма посчитана для аккаунта demo и будет работать только с ним, crc для вашего аккаунта рассчитывается на основе приватного ключа, который находится в разделе Настройки -> Интеграция вашего аккаунта.

Список поддерживаемых полей:

  • display_name — имя

  • phone — телефон

  • email — Email

  • icq — ICQ

  • profile_url — ссылка на профиль

  • avatar_url — сcылка на графический файл — аватарку

  • id — ID посетителя на сайте

  • login — login посетителя на сайте

  • comment — комментарий

  • info — дополнительная информация

Все значения полей должны быть строковыми, поле id является обязательным (по нему идентифицируется пользователь в системе), остальные поля — опциональные. Поле crc должно содержать контрольную сумму, для вычисления которой необходимо отсортировать поля в соответствии с алфавитным порядком имен полей, сложить значения полей в одну строку, в конец добавить ключ, который находится в разделе Общие настройки -> Приватные ключи вашего аккаунта, после чего от полученной строки вычислить md5, кодировка при вычислении crc должна быть либо cp1251, либо koi8-r, либо utf-8. Ключ не должен быть доступен клиентам, и подпись должна формироваться только на вашем сервере.

Приватные ключи аккаунта

Внимание!

Мы настоятельно не рекомендуем использовать алгоритм md5. Наиболее предпочтительным является алгоритм sha-512.

Для приведенного выше примера это будет:

md5(display_name + email + id + phone + < ключ >)

т. е.

md5('Евгенийsupport@webim.ru12345+7 812 3855337' + < ключ >)

Если вы используете только ссылку на чат в виде client.php, то вы можете передать объект посетителя через GET параметр provided-visitor как значение в формате JSON. Для примера выше будет получаться следующая ссылка:

https://(account name).webim.ru/webim/client.php?provided-visitor=%7B%22id%22%3A+%2212345%22%2C%22display_name%22%3A+%22Eugeny%22%2C%22phone%22%3A%22%2B7+812+3855337%22%2C%22email%22%3A%22support%40webim.ru%22%2C%22crc%22%3A%22cdc2c8b0542897dd311fe85754479860%22%7D

Для корректного отображения заголовка и ссылки страницы, с которого открыли ссылку чата, в интерфейсе оператора можно также передать через GET параметр start-page, как значение в формате JSON с полями title и url, например,

{
    "title": "Главная страница",
    "url": "https://example.com"
}

Для данного примера получится следующая ссылка:

https://(account name).webim.ru/webim/client.php?start-page=%7B%22title%22%3A%22%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%22%2C%22url%22%3A%22http%3A%2F%2Fexample.com%22%7D

Обработчик авторизации

Используется, например для создания брендированных приложений, в которых пользователи должны авторизовываться с помощь Email и пароля на стороне клиента. Клиент предоставляет некоторый URL (по HTTPS), который принимает два параметра email и password с помощью метода POST и возвращает структуру с описанием пользователя в формате JSON в соответствии с текущей спецификацией:

  • Статус ответа 200 и тело ответа:

    {  
      "visitor":{
          "id":"12345",  
          "display_name":"Евгений",
          "phone":"+7 812 3855337",
          "email":"support@webim.ru",
          "crc":"ccbb082afba5022de58d8eeb7d5599ac"
      }
    }
    

    (объект visitor аналогичен объекту webim_visitor, описанному выше),

  • Статус ответа 401 и тело ответа:

    {
    'error': 'unauthorized'
    }