API JavaScript SDK
Параметры start(), метод агента get() и формат результата @fingerru/agent.
Здесь описаны функция start(), методы агента и данные, которые они возвращают. Установка и первый запрос показаны в быстром старте.
import { start } from '@fingerru/agent'
const agent = start({
apiKey: 'pk_live_example',
loadTimeout: 10_000,
cache: { storage: 'sessionStorage', duration: 3600 },
})
const visitor = await agent.get({ timeout: 5_000 })start(options)
start() создаёт агента и сразу его возвращает. Функция проверяет параметры, но ничего не загружает и не отправляет. Скрипт сбора данных загружается при первом вызове get().
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
apiKey | string | — | Обязательный. Публичный API-ключ проекта. SDK передаёт его в заголовке X-Public-Key. |
endpoint | string | — | Адрес вашего прокси на собственном поддомене. Подробнее — в разделе endpoint. |
loadTimeout | number | 10000 | Сколько миллисекунд ждать загрузки скрипта сбора данных. |
cache | CacheConfig | выключен | Настройки кеша результата get(). Подробнее — в разделе cache. |
Если параметр задан неверно, start() сразу выбрасывает FingprintAgentError. Коды этих ошибок перечислены на странице Ошибки SDK.
endpoint
Укажите endpoint, если запросы к Fingprint должны идти через ваш поддомен. Передайте только origin — протокол и домен:
const agent = start({
apiKey: 'pk_live_example',
endpoint: 'https://metrics.example.com',
})Допустим только http: или https:. Путь, query, hash, логин и пароль в адресе не допускаются: https://metrics.example.com/api вызовет ошибку INVALID_ENDPOINT.
Если endpoint не задан, SDK использует адреса Fingprint по умолчанию.
cache
По умолчанию каждый вызов get() собирает данные и отправляет запрос. Включите кеш, чтобы в течение заданного времени повторные вызовы возвращали сохранённый результат без нового запроса:
const agent = start({
apiKey: 'pk_live_example',
cache: { storage: 'localStorage', duration: 3600 },
})| Поле | Тип | Описание |
|---|---|---|
storage | 'memory' | 'sessionStorage' | 'localStorage' | Обязательное. Где хранить результат. |
duration | number | Обязательное. Время жизни записи в секундах: больше 0 и не больше 43200 (12 часов). |
keyPrefix | string | Префикс ключа записи. По умолчанию __fingprint_agent_cache. Не может быть пустой строкой. |
Как выбрать storage:
memory— результат хранится в памяти страницы и пропадает после перезагрузки;sessionStorage— результат живёт до закрытия вкладки;localStorage— результат доступен во всех вкладках сайта, пока не истечётduration.
В кеш попадает только результат get(): user, requestId. Собранные данные браузера в нём не хранятся. Запись привязана к apiKey и адресу запроса, поэтому агенты с разными ключами не читают кеш друг друга.
Если выбранное хранилище недоступно, например его запрещают настройки браузера, SDK хранит результат в памяти. Ошибки кеша не прерывают get().
agent.get(options?)
get() возвращает идентификатор посетителя от Fingprint API. Метод собирает данные браузера, отправляет их POST-запросом и возвращает Promise<VisitorResult>.
const visitor = await agent.get({ ignoreCache: true })| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
timeout | number | 10000 | Сколько миллисекунд ждать ответа API. Время загрузки скрипта ограничивает loadTimeout. |
ignoreCache | boolean | false | Не читать кеш и выполнить новый запрос. Новый результат всё равно сохранится в кеш, если он включён. |
Если несколько одинаковых вызовов get() выполняются одновременно, SDK отправляет один запрос и возвращает его результат всем вызовам.
VisitorResult
type VisitorResult = {
user: string
requestId?: string
cacheHit?: boolean
}| Поле | Описание |
|---|---|
user | Идентификатор посетителя. По нему найдите событие в кабинете в столбце Visitor ID. |
requestId | Идентификатор запроса, если API его вернул. |
cacheHit | true, если результат взят из кеша и запрос к API не выполнялся. При новом запросе поля нет. |
После успешного ответа SDK сохраняет user в localStorage под ключом __uident_id и передаёт его в следующих запросах. Если localStorage недоступен, get() всё равно вернёт результат.
Подключение через CDN
В IIFE-сборке те же функции доступны через глобальный объект FingprintAgent:
const agent = FingprintAgent.start({ apiKey: 'pk_live_example' })Параметры и методы совпадают с npm-пакетом. Как подключить скрипт, показано на странице JavaScript.