Серверное локальное приложение без пользовательского интерфейса
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Серверное локальное приложение без пользовательского интерфейса выполняет код на вашем сервере, а своей страницы внутри Битрикс24 не показывает. В левом меню такого приложения нет — его запускает не сотрудник, а ваш код: планировщик, внешний сервис или обработчик событий.
Приложение работает от имени сотрудника, который его установил. Токены оно получает один раз при установке, хранит у себя и продлевает само.
Приложение работает только в том Битрикс24, где его создали. Если решение нужно устанавливать на разные Битрикс24, разрабатывайте тиражное приложение.
Другие виды локальных приложений и критерии выбора между ними описаны в статье Локальные приложения.
Как работает авторизация
Битрикс24 не открывает страницу такого приложения, поэтому передавать токены при каждом запуске некуда. Приложение проходит полный вариант OAuth 2.0.
- Вы сохраняете форму локального приложения.
- Битрикс24 обращается POST-запросом к адресу из поля Путь для первоначальной установки и передает событие ONAPPINSTALL с объектом
auth. - Скрипт первоначальной установки сохраняет данные из
authна вашей стороне. - Приложение подставляет
access_tokenв запросы к REST API и вызывает методы. - Приложение обменивает
refresh_tokenна новую пару токенов и перезаписывает сохраненные значения, когдаaccess_tokenистекает.
Основные данные объекта auth:
|
Параметр |
Что это |
|
access_token |
Авторизационный токен для вызова методов |
|
expires_in |
Время жизни |
|
refresh_token |
Токен продления авторизации. Действует 180 дней. По нему приложение получает новую пару токенов |
|
domain |
Адрес Битрикс24, в котором установлено приложение |
|
client_endpoint |
Адрес, с которого начинаются вызовы методов этого Битрикс24 |
|
server_endpoint |
Адрес сервера авторизации, к которому приложение обращается за новой парой токенов |
|
scope |
Скоупы, выданные приложению. За их пределами метод вернет ошибку |
|
application_token |
Токен приложения. По нему приложение проверяет, что запрос пришел от Битрикс24 |
|
member_id |
Идентификатор Битрикс24. По нему приложение отличает один Битрикс24 от другого |
|
status |
Статус приложения. У локального — |
Описанный порядок работает при выключенном флажке Приложение само завершает установку.
Запрос установки Битрикс24 отправляет со своего сервера, браузер в этом запросе не участвует. Поэтому приложение без интерфейса не вызывает BX24.installFinish — вызывать его неоткуда, и Битрикс24 считает установку завершенной сам.
Полный состав данных разобран в статье Событие после успешной установки приложения OnAppInstall, порядок продления токенов — в статье Автоматическое продление токенов OAuth 2.0, сценарий установки — в статье Callback установки.
Как получать события
На адрес первоначальной установки обработчики вешает сам Битрикс24. Событие ONAPPINSTALL приходит туда при выключенном флажке Приложение само завершает установку, событие ONAPPUSERREADY — независимо от флажка.
ONAPPUSERREADY приходит после того, как Битрикс24 создал приложению системного пользователя. Авторизация этой технической учетной записи передается в объекте data, а в auth того же запроса лежит авторизация сотрудника, который установил приложение. Что именно приходит в событии, описано в статье Событие создания системного пользователя приложения ONAPPUSERREADY.
Остальные события приложение подписывает само, и на адрес из поля Путь вашего обработчика они не приходят.
Подписку оформляют методом event.bind. Адрес обработчика события передается в параметре handler, а список доступных событий собран в разделе События: обзор методов и событий. Подписаться удобно в скрипте первоначальной установки, сразу после сохранения токенов.
Проверяйте источник каждого запроса к обработчику события — порядок описан в разделе Как проверить источник запроса.
Публичного адреса у приложения может не быть: оно работает за файрволом или включается по расписанию. Тогда выбирайте Офлайн-события — Битрикс24 не вызывает обработчик, а копит изменения в очереди, и приложение забирает их методом event.offline.get.
Когда выбрать этот вид приложения
Серверное локальное приложение без пользовательского интерфейса подходит, если нужно:
- синхронизировать данные Битрикс24 с внешней системой по расписанию или по изменению данных
- получать события Битрикс24 на свой обработчик и обрабатывать их без участия сотрудника
- показывать интерфейс на своей стороне — на своем сайте или в своем сервисе — и обращаться к Битрикс24 со своего сервера
Выберите другой вид приложения, если:
- нужна своя страница внутри Битрикс24 — подойдет Серверное локальное приложение с пользовательским интерфейсом. Такое приложение получает токены при каждом открытии и работает от имени того, кто его открыл
- своего сервера нет — подойдет Статичное локальное приложение. Такое приложение работает в браузере и события не получает
- внешней системе достаточно вызывать методы и принимать события, а хранить токены и проходить OAuth 2.0 не нужно — подойдут входящие и исходящие вебхуки
Что нужно подготовить
- Доступ к REST API. Локальное приложение работает, только если у Битрикс24 есть доступ к REST API — по подписке Маркетплейс или в пробном режиме.
- Право на создание приложений. Создать приложение может администратор Битрикс24 или сотрудник, которому выдано такое право. Если пункта Локальное приложение нет в интерфейсе, попросите администратора настроить доступ к созданию приложений.
- Веб-сервер. Пример написан на PHP, поэтому нужен сервер с PHP, модулем cURL и действующим SSL-сертификатом. Адрес скрипта первоначальной установки должен отвечать по HTTPS уже в момент сохранения формы. Требования к серверу описаны в статье CRest PHP SDK: установка и первый вызов.
Что содержит пример
Готовый пример печатает данные сотрудника, от имени которого работает приложение. Их возвращает метод profile.
Архив — поставка SDK CRest:
crest.php— код библиотекиsettings.php— настройки приложения: код приложения и секретный ключinstall.php— скрипт первоначальной установкиcheckserver.php— проверка настроек сервераindex.php— страница примера
Скрипт install.php разбирает запрос установки. Если пришло событие ONAPPINSTALL с объектом auth, скрипт сохраняет токены в файл settings.json рядом с библиотекой и ничего не выводит в ответ.
Страница index.php подключает библиотеку и вызывает метод:
<?php
require_once __DIR__ . '/crest.php';
$result = CRest::call('profile');
echo '<pre>';
print_r($result);
echo '</pre>';
Продление токенов берет на себя CRest::call: получив ошибку expired_token, библиотека сама обновляет пару токенов и повторяет вызов.
Пример собран на CRest, но вид приложения к этой библиотеке и к PHP не привязан. Для PHP есть и B24PhpSDK. Он оформляет вызовы как PHP-классы и методы, но требует Composer и PHP 8.2 или новее. CRest подключают файлами из архива. Остальные библиотеки перечислены в обзоре SDK.
Как создать приложение
-
Разместите файлы из архива на своем сервере. Запомните адреса
install.phpиindex.php: их указывают в форме. -
Откройте в браузере
checkserver.phpпо адресу сервера. Скрипт проверит, что модуль cURL доступен и CRest может сохранять свои файлы. Если проверка не прошла, устраните замечания скрипта, прежде чем переходить к форме: без cURL и без права на запись CRest не сохранит токены. -
Откройте форму локального приложения: Приложения > Разработчикам, вкладка Готовые сценарии, далее Другое > Локальное приложение.


-
Выберите вариант Серверное. Вариант Статичное рассчитан на архив со страницей — смотрите статью Статичное локальное приложение.
-
Укажите в поле Путь для первоначальной установки адрес
install.php. По этому адресу Битрикс24 передаст данные авторизации. -
Оставьте выключенным флажок Приложение само завершает установку. С выключенным флажком Битрикс24 завершает установку сам и отправляет данные авторизации на адрес первоначальной установки. Если флажок включить, обработчик события
ONAPPINSTALLне зарегистрируется — токены не придут, а завершить установку приложению без интерфейса нечем. -
Укажите в поле Путь вашего обработчика адрес
index.php. Поле обязательное, хотя страницу приложения Битрикс24 не открывает. -
Оставьте пустым поле Название пункта меню и скрытые под ним поля названий на других языках. Именно пустое название делает приложение доступным только через API: пункт в левом меню Битрикс24 не появится.
-
Выберите скоупы приложения в блоке Настройка прав. Без них форма не сохранится. Примеру подойдет любой: метод
profileработает с базовым набором прав. На скриншоте выбранuser. Коды перечислены в статье Доступные скоупы Битрикс24.
-
Сохраните форму. Приложение появится в списке Приложения > Разработчикам > Интеграции.
-
Скопируйте значения полей Код приложения (client_id) и Ключ приложения (client_secret) из карточки приложения в константы
C_REST_CLIENT_IDиC_REST_CLIENT_SECRETфайлаsettings.phpи загрузите измененный файл на сервер.
Битрикс24 обращается к install.php сразу после сохранения формы, поэтому токены сохраняются еще до того, как вы заполните settings.php. Код приложения и секретный ключ нужны позже: по ним CRest продлевает токены.
Чем отличаются сценарии установки, описано в статье Установка локальных приложений: обзор сценариев.
Как проверить результат
Откройте index.php в браузере по адресу своего сервера. Страница напечатает ответ метода profile:
Array
(
[result] => Array
(
[ID] => 1
[ADMIN] => 1
[NAME] => Иван
[LAST_NAME] => Петров
[PERSONAL_GENDER] => M
[TIME_ZONE] => Europe/Moscow
)
[time] => Array
(
[start] => 1788867501.63142
[finish] => 1788867501.67418
[duration] => 0.042757034301758
[processing] => 0.0012109279632568
[date_start] => 2026-09-10T14:38:21+03:00
[date_finish] => 2026-09-10T14:38:21+03:00
[operating] => 0
)
)
Данные сотрудника возвращаются в ключе result, а time добавляет к ответу сам REST API. Состав данных не зависит от того, кто открыл страницу index.php: приложение вызывает метод с токенами, полученными при установке. Список полей описан в статье Получить базовую информацию о текущем пользователе profile.
Что делать при ошибках
no_install_app. В настройках CRest пусто хотя бы одно из значенийaccess_token,domain,refresh_token,application_token,client_endpoint. Скриптinstall.phpне отработал: чаще всего в момент сохранения формы сервер был недоступен или на нем не хватило прав на запись. Проверьте сервер скриптомcheckserver.phpи нажмите Переустановить в карточке приложения — кнопка доступна только администратору Битрикс24.expired_token. Токенaccess_tokenистек, а продлить его не удалось. Проверьте, что вsettings.phpзаполненыC_REST_CLIENT_IDиC_REST_CLIENT_SECRET: без них запрос к серверу авторизации не пройдет.insufficient_scope. Приложению не выдан скоуп метода. Добавьте нужный скоуп в карточке приложения.- Токены перестали продлеваться через несколько месяцев. Срок действия
refresh_token— 180 дней. Если приложение не обращалось к Битрикс24 дольше, авторизацию нужно получить заново. Как этого избежать, описано в статье Автоматическое продление токенов OAuth 2.0.
Права и безопасность
- Права сотрудника. Токены выданы сотруднику, который установил приложение, поэтому вызов ограничен его правами в Битрикс24. Приложение работает от его имени постоянно, а не только в момент установки. Если приложение получило событие
ONAPPUSERREADY, у него есть и авторизация системного пользователя — она от установившего сотрудника не зависит. - Скоупы приложения. Набор скоупов выбирают при создании и меняют в карточке приложения.
- Секреты и токены. Код приложения, секретный ключ и оба токена храните на своем сервере. Секретный ключ участвует только в запросах к серверу авторизации. Не размещайте эти значения в клиентском коде, не сохраняйте в репозитории и не передавайте третьим лицам.
- Файл настроек. Закройте доступ из внешней сети к
settings.json: по умолчанию он лежит в папке, доступной по адресу приложения, а в нем хранятся токены. - Логи библиотеки. CRest по умолчанию пишет логи в папку
logsрядом с библиотекой, и в записи об установке оказывается весь запрос вместе с токенами. Закройте папку от внешнего доступа или отключите логи константойC_REST_BLOCK_LOGв файлеsettings.php.
Как проверить источник запроса
Адреса приложения доступны из внешней сети — обратиться к ним может кто угодно, а не только Битрикс24. Поэтому обработчик события должен сравнивать два значения application_token:
- Приложение сохраняет эталонное значение при установке. В поставке CRest скрипт
install.phpзаписываетapplication_tokenиз объектаauthв свои настройки. У локального приложения это значение остается прежним, пока не меняется секретный ключ. - Битрикс24 передает текущее значение в параметре
auth.application_tokenкаждого события.
Перед обработкой события сравните эти значения и отклоните запрос, если они не совпали. Правила хранения токена описаны в статье Безопасность в обработчиках.
Для адреса первоначальной установки эта сверка не работает: эталонное значение приходит в том же запросе, который нужно проверить. Поэтому скрипт установки не должен ничего выводить в ответ и не должен перезаписывать уже сохраненные настройки при повторных обращениях.
Продолжите изучение
- Локальные приложения
- Серверное локальное приложение с пользовательским интерфейсом
- Статичное локальное приложение
- Callback установки
- Автоматическое продление токенов OAuth 2.0
- Событие после успешной установки приложения OnAppInstall
- Зарегистрировать новый обработчик события event.bind
- Безопасность в обработчиках