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

!!! Note "N.B."
    Вместо алгоритмов, описанных ниже, рекомендуется использовать токен. См ["Идентификация через токен"](https://webim.ru/kb/dev/identification/authorization-scheme-tokenizer.html).

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

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

Пример:

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

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

!!! Note "N.B."
    Контрольная сумма (`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`. Ключ не должен быть доступен клиентам, и подпись должна формироваться только на вашем сервере.

![Приватные ключи аккаунта](https://webim.ru/kb/img/dev/identification/id-1-0/identification-keys.webp){ style="width: 1499px; max-width: 100%" }

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

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

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

т. е.

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


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

```
https://(account name).webim.ru/webim/visitor/chat?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/visitor/chat?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'
    }
    ```

---

Источник: https://webim.ru/kb/dev/identification/id-1-0.html
