Когда дело доходит до настройки интеграции календаря с Microsoft с помощью Node.js, лучшим методом аутентификации является OAuth 2.0 с разрешениями приложений (Application Authentication).

Получение аутентификации приложения

Вот шаги для получения токена доступа для аутентификации приложения:
1-
Перейдите на портал Azure (https://portal.azure.com ) и перейдите в Azure Active Directory.
2- Зарегистрируйте новое приложение и запишите идентификатор клиента и секрет клиента, предоставленные Azure AD.
3- Установите разрешения API:

Получите токен доступа:

В коде вашего сервера Node.js добавьте следующий код для получения токена доступа:

const axios = require('axios');

const getToken = async () => {
  const tokenEndpoint = 'https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token'; // Replace {tenant} with your Azure AD tenant ID or domain name
  const clientId = 'your_client_id'; // Replace with your Azure AD application client ID
  const clientSecret = 'your_client_secret'; // Replace with your Azure AD application client secret

  try {
    const response = await axios.post(tokenEndpoint, {
      grant_type: 'client_credentials',
      client_id: clientId,
      client_secret: clientSecret,
      scope: 'https://graph.microsoft.com/.default'
    });

    const accessToken = response.data.access_token;
    console.log('Access Token:', accessToken);
  } catch (error) {
    console.error('Error obtaining access token:', error.response.data.error_description);
  }
};

getToken();

Замените {tenant} своим идентификатором клиента Azure AD или доменным именем.
Замените 'your_client_id' идентификатором клиента вашего приложения Azure AD.
Замените 'your_client_secret' секретом клиента вашего приложения Azure AD.

Используйте полученный токен доступа, чтобы установить событие календаря:

  • Получив токен доступа, вы можете использовать его для выполнения запросов к API Microsoft Graph от имени своего приложения.
  • Выполните предыдущие шаги, указанные в разделе «Использование токена доступа для установки события календаря», чтобы создать событие календаря с использованием полученного токена доступа.
const axios = require('axios');

const createEvent = async (accessToken, userEmail) => {
  const url = `https://graph.microsoft.com/v1.0/users/${userEmail}/events`;
  const eventData = {
    subject: 'My Event',
    start: {
      dateTime: '2023-07-03T09:00:00',
      timeZone: 'Your_Time_Zone'
    },
    end: {
      dateTime: '2023-07-03T10:00:00',
      timeZone: 'Your_Time_Zone'
    }
  };

  try {
    const response = await axios.post(url, eventData, {
      headers: {
        'Authorization': `Bearer ${accessToken}`,
        'Content-Type': 'application/json'
      }
    });

    console.log('Event created:', response.data);
  } catch (error) {
    console.error('Error creating event:', error.response.data.error);
  }
};

const accessToken = 'your_access_token'; // Replace with the actual access token obtained using delegated authentication
const userEmail = '[email protected]'; // Replace with the email address of the target user's calendar
createEvent(accessToken, userEmail);

Замените 'Your_Time_Zone' на соответствующий часовой пояс для времени начала и окончания мероприятия.
Замените 'your_access_token' на токен доступа, полученный во время аутентификации.
Замените '[email protected]' на адрес электронной почты календаря целевого пользователя.