Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как настроить и проверить пример логики сервера, который интегрирует Power Pages с Microsoft Graph и SharePoint Online.
Шаг 1. Скачивание примера пакета
- Перейдите в репозиторий https://github.com/microsoft/power-pages-samplesGitHub.
- Выберите Код Скачать ZIP>.
- После скачивания извлеките ZIP-файл в локальную папку, например:
C:\PowerPages\ServerLogic - Перейдите к извлеченному пути:
samples/server-logic/sharepoint-integrationЭта папка содержитevent-registration.zipпакет решения, который включает ресурсы сайта Power Pages, которые будут импортированы на последующих этапах.
Кроме того, при желании используйте клон git.
git clone https://github.com/microsoft/power-pages-samples.git
cd power-pages-samples/samples/server-logic/sharepoint-integration
Шаг 2. Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Доступ к идентификатору Microsoft Entra (Azure AD) с разрешением на регистрацию приложений.
- Доступ к сайту SharePoint Online (например, https://contoso.sharepoint.com/sites/EventSite).
Шаг 3. Создание и настройка приложения Entra ID
Требуется регистрация приложения, чтобы разрешить коду логики сервера пройти проверку подлинности в Microsoft Graph.
Создание регистрации приложения
- Перейдите на портал Azure и выберите "Регистрация приложений".
- Выберите +Создать регистрацию.
- Укажите имя (например, PowerPages-Graph-Integration).
- Выберите Учетные записи только в данном каталоге организации.
Замечание
Для этого примера не нужно указывать URI перенаправления.
- Выберите Зарегистрировать.
Конфигурация разрешений API
- В новом приложении перейдите в раздел "Разрешения> API", чтобыдобавить разрешение.
- Выберитеразрешения приложения>.
- Добавьте следующие разрешения:
- Sites.ReadWrite.All (для операций с файлами SharePoint)
- Mail.Send (необязательно, если вы планируете включить раздел электронной почты)
- Выберите "Предоставить согласие администратора " для вашего клиента.
Создание секрета клиента
- Перейдите к сертификатам и секретам>клиента.
- Выберите + Создать секрет клиента.
- Введите описание и выберите срок действия (например, шесть месяцев).
- Нажмите кнопку "Добавить" и скопируйте созданное значение немедленно. Это ваш CLIENT_SECRET.
Сбор необходимых значений
Из приложения Azure:
- Идентификатор> клиента CLIENT_ID
- Идентификатор арендатора> TENANT_ID
- Секрет клиента> CLIENT_SECRET
Шаг 4. Определение сайта и папки SharePoint
Скрипт отправляет созданные билеты на события на сайт SharePoint.
- Определите имя узла SharePoint и путь сайта: например: HOSTNAME =
contoso.sharepoint.comSITE_PATH =/sites/EventSite - Убедитесь, что библиотека документов с именем Documents существует (по умолчанию).
Шаг 5. Развертывание пакета
Создайте новый сайт, импортируя недавно скачанный сайт из GitHub. Сведения о импорте сайта см. в разделе power-pages-solutions
Во время обновления сайта обновите значения переменных среды. Обновите следующие значения, которые были записаны на предыдущих шагах:
- идентификатор клиента
- Идентификатор клиента
- Секрет клиента (сохраните это значение в хранилище ключей и используйте его в переменной среды. Для тестирования его можно сохранить непосредственно в переменной среды.)
- ИМЯ УЗЛА
- SITE_PATH
Особенности скрипта: секция конфигурации
const CLIENT_ID = Server.SiteSetting.Get("CLIENT_ID");
const CLIENT_SECRET = Server.SiteSetting.Get("CLIENT_SECRET");;
const TENANT_ID = Server.SiteSetting.Get("TENANT_ID");
const HOSTNAME = Server.SiteSetting.Get("HOSTNAME");
const SITE_PATH = Server.SiteSetting.Get("SITE_PATH");
Они безопасно загружаются из параметров сайта Power Pages (переменные среды).
Шаг 6. Тестирование интеграции SharePoint
Скрипт обрабатывает отправки форм регистрации событий, получает маркер доступа Microsoft Graph, создает HTML-билет, отправляет его в SharePoint и создает запись в Dataverse.
Подсветка скрипта: вызов Microsoft Graph для токена доступа
async function getAccessToken() {
const body = {
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"scope": "https://graph.microsoft.com/.default",
"grant_type": "client_credentials"
};
const tokenResp = await Server.Connector.HttpClient.PostAsync(
`https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token`,
JSON.stringify(body),
{ "Content-Type": "application/x-www-form-urlencoded" },
"application/x-www-form-urlencoded"
);
const tokenJson = JSON.parse(JSON.parse(tokenResp).Body);
return tokenJson.access_token;
}
Выделение скрипта: отправка билета в SharePoint
const siteResp = await Server.Connector.HttpClient.GetAsync(
`https://graph.microsoft.com/v1.0/sites/${HOSTNAME}:${SITE_PATH}`,
{ Authorization: `Bearer ${accessToken}` }
);
const siteId = JSON.parse(JSON.parse(siteResp).Body).id;
const driveResp = await Server.Connector.HttpClient.GetAsync(
`https://graph.microsoft.com/v1.0/sites/${siteId}/drive`,
{ Authorization: `Bearer ${accessToken}` }
);
const driveId = JSON.parse(JSON.parse(driveResp).Body).id;
const uploadUrl = `https://graph.microsoft.com/v1.0/drives/${driveId}/root:/Tickets/${fileName}:/content`;
await Server.Connector.HttpClient.PutAsync(
uploadUrl,
htmlTicket,
{ Authorization: `Bearer ${accessToken}`, "Content-Type": "text/html" },
"text/html"
);
После успешного выполнения:
- Новая запись отображается в Dataverse в crd69_eventregistrations.
- HTML-файл билета передается в папку SharePoint Documents > Tickets .
- Поле crd69_ticketurl содержит ссылку на отправленный файл билета.
(Необязательно) Шаг 7. Включение уведомления по электронной почте
Чтобы отправить сообщение электронной почты подтверждения участнику, выполните следующие действия:
- Раскомментируйте раздел "Отправить подтверждающее сообщение электронной почты" в скрипте.
- Замените {senderUserId} допустимым идентификатором пользователя с поддержкой почтового ящика (например, учетной записью службы).
- Убедитесь, что добавлено разрешение Mail.Send и предоставлено согласие администратора.
Связанные сведения
Общие сведения о логике сервера
Разработка логики сервера
Объекты сервера
Взаимодействие с таблицами Dataverse с помощью логики сервера