Подключение Microsoft 365 через приложение Entra (Microsoft App)
Microsoft App — способ подключения календарей Microsoft 365 к UnSpot через приложение, зарегистрированное в Microsoft Entra. Вы один раз создаёте приложение в своём тенанте, выдаёте ему права на календари и указываете его данные в UnSpot — дальше это подключение обслуживает все ресурсные календари переговорных: UnSpot сам получает список переговорных организации и подключает их календари, без авторизации под учётной записью пользователя и без выдачи прав на каждый календарь отдельно. Классическая схема с авторизацией под сервисной учётной записью по-прежнему работает — см. статьи «Предоставление прав на управление ресурсным календарем в Microsoft 365» и «Подключение календаря Office 365 к переговорной».
Как это работает
UnSpot обращается к Microsoft Graph от имени приложения, а не от имени пользователя. Приложение регистрируется в Microsoft Entra в вашем тенанте, получает секрет (Client Secret) и два разрешения уровня приложения: Place.Read.All — читать список переговорных организации, и Calendars.ReadWrite — работать с событиями в календарях. После того как администратор тенанта подтвердит разрешения (Grant admin consent), UnSpot авторизуется по идентификаторам приложения (Client ID + Tenant ID + Client Secret) напрямую у Microsoft — интерактивный вход и повторная авторизация пользователей не нужны.
- При сохранении подключения UnSpot проверяет доступ: запрашивает у Microsoft список переговорных тенанта. Если данные приложения неверны или разрешения не подтверждены, подключение не сохранится — UnSpot покажет описание ошибки и оригинальный ответ Microsoft.
- При подключении календаря к переговорной UnSpot пытается создать в календаре комнаты тестовое событие и сразу удаляет его — так проверяется возможность записи.
- Дальше синхронизация двусторонняя: брони переговорных из UnSpot создаются, обновляются и удаляются в основном календаре ресурсного ящика комнаты, а события, созданные в календаре комнаты напрямую (например, из Outlook), появляются в UnSpot. Изменения приходят по подписке на уведомления Microsoft Graph, которую UnSpot оформляет при подключении календаря.
- Одно подключение обслуживает все переговорные тенанта. Подключений может быть несколько — например, для разных тенантов Microsoft.
Требования
- Доступ к Microsoft Entra с правом регистрировать приложения и подтверждать разрешения (Grant admin consent) — например, роль Global Administrator.
- Переговорные заведены в Microsoft 365 как ресурсные почтовые ящики комнат (Room mailbox) — иначе UnSpot не увидит их в списке. Как создать ресурсный календарь — см. статью «Создание ресурсного календаря в Office 365».
- Права в UnSpot: подключение настраивает Владелец. Администратор интеграций видит вкладку «Синхронизации», но управлять подключениями календарей не может.
Создание приложения в Microsoft Entra
Откройте entra.microsoft.com, в меню слева выберите App registrations и нажмите New registration.

Введите произвольное имя в поле Name. В поле Supported account types выберите вариант для одного тенанта — Accounts in this organizational directory only (Single tenant). Нажмите Register.

Создайте секрет приложения: на странице приложения откройте Certificates & secrets (или ссылку Add a certificate or secret на вкладке Overview) и нажмите New client secret. Заполните Description (необязательно) и выберите срок действия — рекомендуем максимальный (24 месяца). Нажмите Add.

Сразу скопируйте значение из колонки Value и сохраните его в надёжном месте: после ухода со страницы Microsoft больше не покажет секрет целиком. Обратите внимание на срок действия — когда он истечёт, синхронизация остановится, и секрет придётся перевыпустить и обновить в UnSpot.

Идентификаторы приложения находятся на вкладке Overview: Application (client) ID — это ClientId, Directory (tenant) ID — это TenantId. Скопируйте оба значения, они понадобятся при подключении в UnSpot.

Выдайте приложению разрешения: откройте API permissions, нажмите Add a permission, выберите Microsoft Graph → Application permissions.

В списке отметьте два разрешения — Place.Read.All и Calendars.ReadWrite — и нажмите Add permissions.

Нажмите Grant admin consent и подтвердите. У обоих разрешений в колонке Status должна появиться зелёная отметка Granted. Стандартное делегированное разрешение User.Read, которое Entra добавляет при регистрации приложения, трогать не нужно — оно не мешает.
Обратите внимание: Application-разрешение Calendars.ReadWrite действует на календари всех почтовых ящиков тенанта. При необходимости область действия приложения можно ограничить только ящиками переговорных — политикой Exchange Online New-ApplicationAccessPolicy (см. документацию Microsoft).

Создание подключения в UnSpot
Перейдите в «Администрирование» → «Интеграции» → «Синхронизации», в разделе «Синхронизация календарей» найдите карточку Microsoft 365 и нажмите «Подключить».

В окне «Подключение Microsoft» заполните форму — все поля обязательны:
| Поле | Что указать |
|---|---|
| ClientId | Application (client) ID со страницы Overview приложения. У каждого подключения свой ClientId — использовать один и тот же в двух подключениях нельзя. После создания подключения это поле изменить нельзя. |
| TenantId | Directory (tenant) ID со страницы Overview приложения. |
| ClientSecret | Значение (Value) секрета, скопированное при его создании. После сохранения секрет скрывается и не отображается при редактировании. |
| Название подключения | Произвольное имя от 2 до 255 символов — отображается на карточке подключения и при выборе подключения у переговорной. |

После нажатия «Сохранить» UnSpot проверяет доступ — запрашивает у Microsoft список переговорных тенанта. При успехе окно закрывается, подключение появляется в списке карточек, показывается уведомление «Microsoft успешно подключен». Если проверка не прошла, окно формы остаётся открытым, а в отдельном окне показывается описание ошибки и оригинальный ответ Microsoft.
Управление подключениями
- Подключений может быть несколько — каждое отображается отдельной карточкой, рядом всегда есть карточка с кнопкой «Подключить» для добавления следующего.
- «Изменить» — редактирование подключения. ClientId изменить нельзя (для другого приложения создайте новое подключение); TenantId, ClientSecret и название — можно. Сохранённый секрет в форме не показывается — вместо него маска ********; новое значение отправляется, только если ввести его заново. При сохранении UnSpot повторно проверяет доступ.
- «Отключить» — удаление подключения после окна подтверждения. Вместе с подключением отключаются календари переговорных, которые через него работали.
- Если подключение перестало работать — например, истёк срок действия ClientSecret или отозваны разрешения, — карточка помечается «Ошибка подключения». Обновите данные через «Изменить»; невалидное подключение не предлагается при подключении календаря к переговорной.
Подключение календаря к переговорной
Календарь подключается из карточки переговорной, повторная авторизация не требуется:
- Перейдите в «Администрирование» → «Управление офисом» → «Рабочие пространства», откройте карточку переговорной и перейдите к подключению календаря.
- Выберите плитку Microsoft с названием нужного подключения.
- В окне «Подключение календаря» выберите из списка ресурсный календарь переговорной и нажмите «Подключить». В списке показываются календари, которые ещё не подключены к другим переговорным.
При подключении UnSpot пытается создать в календаре тестовое событие и сразу удаляет его. Если создать событие не удалось, UnSpot покажет описание ошибки и ответ Microsoft. У переговорной с подключённым календарём на странице пространств отображается иконка Microsoft. Отключается календарь так же, как для остальных провайдеров, — из карточки переговорной.
Ошибки при подключении
| Сообщение | Что означает и что делать |
|---|---|
| Client ID уже используется | Подключение с таким ClientId уже существует. Для второго подключения зарегистрируйте отдельное приложение в Entra. |
| Некорректные учётные данные. | Microsoft отклонил авторизацию приложения. Проверьте ClientId, TenantId и ClientSecret; убедитесь, что срок действия секрета не истёк. |
| Недостаточно прав для сервисного аккаунта или приложения. | Приложению не хватает разрешений. Проверьте, что выданы Application-разрешения Place.Read.All и Calendars.ReadWrite и нажата кнопка Grant admin consent. |
| Ошибка подключения. | Общая ошибка при обращении к Microsoft. В окне ошибки UnSpot показывает оригинальный ответ сервиса — по нему видно причину. |
| Этот календарь уже подключён. | Выбранный ресурсный календарь уже привязан к другой переговорной. |
| У комнаты уже есть подключенный календарь. | У переговорной может быть только один календарь — сначала отключите текущий. |
| Календарь не найден. | Ресурсный календарь недоступен приложению — проверьте, что комната существует в тенанте и заведена как Room mailbox. |