Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta guía se explica cómo configurar y probar el ejemplo de lógica de servidor que integra Power Pages con Microsoft Graph y SharePoint online.
Paso 1: Descargar el paquete de ejemplo
- Vaya al repositorio https://github.com/microsoft/power-pages-samplesde GitHub .
- Seleccione
Descargar archivo ZIP . - Después de descargarlo, extraiga el archivo ZIP en una carpeta local, por ejemplo:
C:\PowerPages\ServerLogic - Navegue al directorio extraído:
samples/server-logic/sharepoint-integrationEsta carpeta contiene elevent-registration.zippaquete de solución, que incluye los recursos del sitio de Power Pages que importará en pasos posteriores.
Como alternativa, use git clone si lo prefiere.
git clone https://github.com/microsoft/power-pages-samples.git
cd power-pages-samples/samples/server-logic/sharepoint-integration
Paso 2: Requisitos previos
Antes de empezar, asegúrese de que tiene:
- Acceso a Microsoft Entra ID (Azure AD) con permiso para registrar aplicaciones.
- Acceso a un sitio de SharePoint Online (por ejemplo, https://contoso.sharepoint.com/sites/EventSite).
Paso 3: Creación y configuración de la aplicación Entra ID
Necesita un registro de aplicaciones para permitir que el código lógico del servidor se autentique en Microsoft Graph.
Crear el registro de la aplicación
- Vaya a Azure Portal y seleccione Registros de aplicaciones.
- Seleccione + Nuevo registro.
- Proporcione un nombre (por ejemplo, PowerPages-Graph-Integration).
- Elija Solo cuentas de este directorio organizacional.
Nota:
No es necesario proporcionar un URI de redirección para este ejemplo.
- Seleccione Registrar.
Configuración de permisos de API
- En la nueva aplicación, vaya a Permisos> de APIAgregar un permiso.
- SeleccionePermisos de aplicación de >.
- Agregue los permisos siguientes:
- Sites.ReadWrite.All (para operaciones de archivos de SharePoint)
- Mail.Send (opcional: solo es necesario si planea habilitar la sección de correo electrónico)
- Seleccione Conceder consentimiento del administrador para el inquilino.
Creación de un secreto de cliente
- Vaya a Certificados y secretos>Secretos de cliente.
- Seleccione + Nuevo secreto de cliente.
- Escriba una descripción y elija un período de expiración (por ejemplo, seis meses).
- Seleccione Agregar y copie el valor generado inmediatamente: este es el CLIENT_SECRET.
Recopilación de valores necesarios
Desde la aplicación de Azure:
- ID de cliente> CLIENT_ID
- Id. de arrendatario> TENANT_ID
- Secreto del cliente> CLIENT_SECRET
Paso 4: Identificar el sitio y la carpeta de SharePoint
El script carga entradas para eventos generadas en un sitio de SharePoint.
- Identifique el nombre de host de SharePoint y la ruta de acceso del sitio: por ejemplo: HOSTNAME =
contoso.sharepoint.comSITE_PATH =/sites/EventSite - Asegúrese de que existe una biblioteca de documentos denominada Documentos (valor predeterminado).
Paso 5: Implementar el paquete
Cree un nuevo sitio web importando el sitio web descargado recientemente desde GitHub. Para obtener información sobre cómo importar el sitio, consulte power-pages-solutions.
Durante la actualización del sitio, actualice los valores de las variables de entorno. Actualice los siguientes valores que capturó en los pasos anteriores:
- Id. de cliente
- Id. de inquilino
- Secreto de cliente (mantenga este valor en un almacén de claves y úselo en la variable de entorno. Para las pruebas, puede mantenerlo directamente en la variable de entorno).
- NOMBRE DE HOST
- SITE_PATH
Resaltado de script: sección Configuración
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");
Se cargan de forma segura desde la configuración del sitio de Power Pages (variables de entorno).
Paso 6: Probar la integración de SharePoint
El script procesa envíos de formularios de registro de eventos, adquiere un token de acceso de Microsoft Graph, genera una entrada HTML, la carga en SharePoint y crea un registro en Dataverse.
Resaltado de script: Llamada a Microsoft Graph para el token de acceso
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;
}
Resaltado de script: Subiendo ticket a 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"
);
Después de una ejecución correcta:
- Aparece un nuevo registro en Dataverse en crd69_eventregistrations.
- Se carga un archivo de ticket HTML en la carpeta Documentos de SharePoint > Tickets.
- El campo crd69_ticketurl contiene el vínculo al archivo de ticket cargado.
(Opcional) Paso 7: Habilitar la notificación por correo electrónico
Para enviar un correo electrónico de confirmación al asistente:
- Descomente la sección "Enviar correo electrónico de confirmación" en el guion.
- Reemplace {senderUserId} por un identificador de usuario habilitado para buzón válido (por ejemplo, una cuenta de servicio).
- Asegúrese de que el permiso Mail.Send esté agregado y haya sido consentido por un administrador.
Información relacionada
Introducción a la lógica del servidor
Lógica del servidor de autor
Objetos de servidor
Interacción con tablas de Dataverse mediante la lógica del servidor