Автодополнение
2ГИС не имеет возможности получить данные о пользователе, осуществляющем через сервис партнера поиск по данным 2ГИС, так как запрос на поиск (или, например, список по рубрике) осуществляется с сервера партнера.
Поэтому партнеру необходимо прокинуть во все запросы данные о пользователе. 2ГИС интересуют следующие данные:
На своей стороне партнеру необходимо сгенерировать две куки для своего домена (название может быть другим):
Название* | Срок действия | Формат |
---|---|---|
_2gis_user | Бессрочная | Случайный UUID |
_2gis_session | session (до закрытия браузера) | Случайный UUID |
* название куки может быть другим по усмотрению партнера
** библиотека для генерации UUID в PHP или короткий сниппет, а так же RFC по UUID
Куки должны быть без аттрибута http-only
, чтобы к ним был доступ из JS-библиотеки 2GIS apitracker.js
Пример кода на PHP:
function randomUUID() { $data = mt_rand(); return \Ramsey\Uuid\Uuid::uuid5(Uuid::NIL, $data)->toString(); } function initCookie($name, $expire) { if (!isset($_COOKIE[$name])) { $value = randomUUID(); setcookie($name, $value, $expire); } else { $value = $_COOKIE[$name]; } return $value; } $dgisUserCookieName = '_2gis_user'; $dgisSessionCookieName = '_2gis_session'; $dgisUserCookieValue = initCookie($dgisUserCookieName, strtotime('+20 years')); $dgisSessionCookieValue = initCookie($dgisSessionCookieName, 0);
В запросы АПИ на catalog.api.2gis.ru с сервера партнеру необходимо передать значения кук GET-параметрами:
Название куки | Параметр |
---|---|
_2gis_user | stat[user] |
_2gis_session | stat[sid] |
Пример на PHP с использованием АПИ-клиента, не поддерживающего идентификаторы в реализации по умолчанию:
$apiClient = new \DGApiClient\ApiConnection('КЛЮЧ ПАРТНЕРА'); $catalogClient = new \DGApiClient\Catalog($apiClient); $results = $catalogClient->branchSearch('кафе', [ 'region_id' => 1, 'stat[user]' => $dgisUserCookieValue, 'stat[sid]' => $dgisSessionCookieValue ]);