Разработка локальных приложений Битрикс24
Локальное приложение в Битрикс24 — самый быстрый способ начать разработку интеграции: не нужно проходить модерацию Маркета, не нужен публичный домен на старте (можно использовать ngrok), не нужно регистрироваться как разработчик. Всё настраивается прямо в настройках портала за 15 минут.
Типичный сценарий: нужно связать Битрикс24 с внутренней системой компании — 1С, складской программой или собственной CRM. Внешний доступ ограничен, публиковать в Маркете смысла нет. Именно для таких задач предназначены локальные приложения.
Регистрация локального приложения
Путь в портале: Приложения → Разработчикам → Другое → Локальное приложение.
Параметры при создании:
-
Тип авторизации:
Серверное приложение(OAuth) илиJavaScript-приложение(JS SDK без серверной части) - Handler URL: адрес вашего приложения, куда Битрикс24 откроет iframe при запуске
- Start URL: URL для старта приложения из меню (может совпадать с Handler URL)
-
Права: набор скоупов —
crm,task,user,disk,catalogи т.д.
После создания получаете client_id и client_secret. Для JavaScript-типа секрет не нужен — токен генерируется на портале и передаётся в iframe через параметры запроса.
Разница между JavaScript и серверным типом
| Параметр | JavaScript-приложение | Серверное приложение |
|---|---|---|
| Авторизация | Токен из параметров URL/postMessage | OAuth 2.0 Authorization Code |
| Серверная часть | Не требуется | Обязательна |
| Хранение секрета | Нет секрета | client_secret на сервере |
| Фоновая работа | Нет | Да (cron, очереди) |
| Подписка на события | Через BX24.js | Через event.bind REST |
| Когда использовать | UI-виджеты, дашборды | Синхронизация, автоматизация |
Разработка JavaScript-типа локального приложения
Минимальный рабочий пример:
<!DOCTYPE html>
<html>
<head>
<script src="//api.bitrix24.com/api/v1/"></script>
</head>
<body>
<div id="app"></div>
<script>
BX24.init(function() {
var auth = BX24.getAuth();
// auth.domain — домен портала
// auth.access_token — токен для REST-запросов
BX24.callMethod('user.current', {}, function(result) {
if (result.error()) {
document.getElementById('app').innerHTML = 'Ошибка: ' + result.error();
return;
}
var user = result.data();
document.getElementById('app').innerHTML =
'Привет, ' + user.NAME + '!';
});
BX24.fitWindow();
});
</script>
</body>
</html>
Файл //api.bitrix24.com/api/v1/ — это Bitrix24 JS SDK, загружается с CDN Bitrix. Подключать напрямую с портала не нужно.
Разработка серверного типа
Для серверного локального приложения нужен HTTPS-endpoint (для разработки подойдёт ngrok):
ngrok http 3000
# Получаем: https://abc123.ngrok.io
Этот URL указываем как Handler URL в настройках приложения.
Обработка OAuth callback на Node.js:
const express = require('express');
const axios = require('axios');
const app = express();
// Handler URL — точка входа
app.get('/', (req, res) => {
const { AUTH_ID, REFRESH_ID, AUTH_EXPIRES, DOMAIN, PLACEMENT } = req.query;
// Сохраняем токены
saveTokens({
domain: DOMAIN,
accessToken: AUTH_ID,
refreshToken: REFRESH_ID,
expiresIn: parseInt(AUTH_EXPIRES)
});
res.sendFile(__dirname + '/public/index.html');
});
// Refresh token endpoint
app.post('/refresh', async (req, res) => {
const { refresh_token, domain } = req.body;
const response = await axios.post(
`https://${domain}/oauth/token/`,
new URLSearchParams({
grant_type: 'refresh_token',
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET,
refresh_token
})
);
res.json(response.data);
});
Права доступа и скоупы
Локальные приложения запрашивают права при установке. Если после регистрации нужно добавить новый скоуп — пользователь должен переустановить приложение (нажать кнопку обновления прав). Это важный UX-момент: планируйте права заранее, особенно если приложение уже в продакшне.
Основные скоупы:
crm — сделки, лиды, контакты, компании
task — задачи и проекты
user — пользователи портала
disk — файлы и папки
calendar — события календаря
sonet_group — группы и рабочие пространства
catalog — товарный каталог
sale — магазин и заказы
telephony — звонки и телефония
Ограничения локальных приложений
- Работают только на одном портале
- Нельзя опубликовать в Маркете
- При смене домена портала нужна переконфигурация
- Нет поддержки нескольких redirect_uri
Для большинства внутрикорпоративных интеграций эти ограничения несущественны. Если в будущем понадобится масштабирование — код локального приложения переносится в тиражное без кардинальной переработки.
Сроки разработки
| Задача | Срок |
|---|---|
| Настройка локального приложения + базовая авторизация | 0,5–1 день |
| Простой виджет (только чтение данных CRM) | 1–3 дня |
| Интеграция с внутренней системой (двусторонняя) | 1–3 недели |
| Полноценное корпоративное приложение | 1–2 месяца |
Локальные приложения — оптимальный старт для MVP: быстрое развёртывание, минимум бюрократии, полный доступ к REST API. Переход в тиражный формат при необходимости занимает 2–3 дня дополнительной работы.







