Когда дело доходит до настройки интеграции календаря с 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]'
на адрес электронной почты календаря целевого пользователя.