Cómo: interactuar con Microsoft Graph y SharePoint mediante la lógica del servidor

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

  1. Vaya al repositorio https://github.com/microsoft/power-pages-samplesde GitHub .
  2. Seleccione Descargar archivo ZIP.
  3. Después de descargarlo, extraiga el archivo ZIP en una carpeta local, por ejemplo: C:\PowerPages\ServerLogic
  4. Navegue al directorio extraído: samples/server-logic/sharepoint-integration Esta carpeta contiene el event-registration.zip paquete 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:

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

  1. Vaya a Azure Portal y seleccione Registros de aplicaciones.
  2. Seleccione + Nuevo registro.
  3. Proporcione un nombre (por ejemplo, PowerPages-Graph-Integration).
  4. Elija Solo cuentas de este directorio organizacional.

    Nota:

    No es necesario proporcionar un URI de redirección para este ejemplo.

  5. Seleccione Registrar.

Configuración de permisos de API

  1. En la nueva aplicación, vaya a Permisos> de APIAgregar un permiso.
  2. SeleccionePermisos de aplicación de >.
  3. 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)
  4. Seleccione Conceder consentimiento del administrador para el inquilino.

Creación de un secreto de cliente

  1. Vaya a Certificados y secretos>Secretos de cliente.
  2. Seleccione + Nuevo secreto de cliente.
  3. Escriba una descripción y elija un período de expiración (por ejemplo, seis meses).
  4. 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.

  1. Identifique el nombre de host de SharePoint y la ruta de acceso del sitio: por ejemplo: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. Asegúrese de que existe una biblioteca de documentos denominada Documentos (valor predeterminado).

Paso 5: Implementar el paquete

  1. 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.

  2. 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:

  1. Aparece un nuevo registro en Dataverse en crd69_eventregistrations.
  2. Se carga un archivo de ticket HTML en la carpeta Documentos de SharePoint > Tickets.
  3. 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:

  1. Descomente la sección "Enviar correo electrónico de confirmación" en el guion.
  2. Reemplace {senderUserId} por un identificador de usuario habilitado para buzón válido (por ejemplo, una cuenta de servicio).
  3. Asegúrese de que el permiso Mail.Send esté agregado y haya sido consentido por un administrador.

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