Procedura: Interagire con Microsoft Graph e SharePoint usando la logica del server

Questa guida illustra come configurare e testare l'esempio di logica del server che integra Power Pages con Microsoft Graph e SharePoint online.

Passaggio 1: Scaricare il pacchetto di esempio

  1. Vai al repository GitHub https://github.com/microsoft/power-pages-samples.
  2. Selezionare Codice > Scarica ZIP.
  3. Dopo il download, estrarre il file ZIP in una cartella locale, ad esempio: C:\PowerPages\ServerLogic
  4. Passare al percorso estratto: samples/server-logic/sharepoint-integration Questa cartella contiene il pacchetto della event-registration.zip soluzione, che include le risorse del sito di Power Pages che verranno importate nei passaggi successivi.

In alternativa, usare git clone se si preferisce.

git clone https://github.com/microsoft/power-pages-samples.git
cd power-pages-samples/samples/server-logic/sharepoint-integration

Passaggio 2: Prerequisiti

Prima di iniziare, assicurarsi di avere:

Passaggio 3: Creare e configurare l'applicazione Entra ID

È necessaria una registrazione dell'app per consentire al codice della logica del server di eseguire l'autenticazione in Microsoft Graph.

Creare la registrazione dell'app

  1. Passare al portale di Azure e selezionare Registrazioni app.
  2. Seleziona + Nuova registrazione.
  3. Specificare un nome( ad esempio, PowerPages-Graph-Integration).
  4. Scegli Account solo in questa directory organizzativa.

    Annotazioni

    Non è necessario fornire un URI di reindirizzamento per questo esempio.

  5. Selezionare Registrazione.

Configurare le autorizzazioni dell'API

  1. Nella nuova app passare a Autorizzazioni> APIAggiungere un'autorizzazione.
  2. SelezionareAutorizzazioni dell'applicazione>.
  3. Aggiungere le autorizzazioni seguenti:
    • Sites.ReadWrite.All (per le operazioni dei file di SharePoint)
    • Mail.Send (facoltativo: necessario solo se si prevede di abilitare la sezione di posta elettronica)
  4. Selezionare Concedi consenso amministratore per il tenant.

Creare un segreto del client

  1. Passare a Certificati e segreti>Segreti client.
  2. Seleziona + Nuovo segreto client.
  3. Immettere una descrizione e scegliere un periodo di scadenza (ad esempio, sei mesi).
  4. Selezionare Aggiungi e copiare immediatamente il valore generato . Si tratta del CLIENT_SECRET.

Raccogliere i valori obbligatori

Dall'app Azure:

  • ID> client CLIENT_ID
  • ID tenant>TENANT_ID
  • Segreto client>CLIENT_SECRET

Passaggio 4: Identificare il sito e la cartella di SharePoint

Lo script carica i ticket di evento generati in un sito di SharePoint.

  1. Identificare il nome host e il percorso del sito di SharePoint: ad esempio: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. Verificare che esista una raccolta documenti denominata Documenti (impostazione predefinita).

Passaggio 5: Distribuire il pacchetto

  1. Creare un nuovo sito importando il sito scaricato di recente da GitHub. Per informazioni su come importare il sito, vedere power-pages-solutions

  2. Durante l'aggiornamento del sito, aggiornare i valori per le variabili di ambiente. Aggiornare i valori seguenti acquisiti nei passaggi precedenti:

    • Client ID
    • ID tenant
    • Segreto client (mantenere questo valore in un archivio di chiavi e usarlo nella variabile di ambiente. Per i test, è possibile mantenerlo direttamente nella variabile di ambiente.)
    • NOME HOST
    • SITE_PATH

Evidenziazione dello script: sezione configurazione

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"); 

Questi vengono caricati in modo sicuro dalle impostazioni del sito di Power Pages (variabili di ambiente).

Passaggio 6: Testare l'integrazione di SharePoint

Lo script elabora gli invii di moduli di registrazione eventi, acquisisce un token di accesso di Microsoft Graph, genera un ticket HTML, lo carica in SharePoint e crea un record in Dataverse.

Evidenziazione dello script: chiamata a Microsoft Graph per il token di accesso

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;
}

Evidenziazione dello script: caricamento di un ticket in 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"
);

Dopo un'esecuzione riuscita:

  1. Un nuovo record viene visualizzato in Dataverse in crd69_eventregistrations.
  2. Un file di ticket HTML viene caricato nella cartella Documenti di > SharePoint.
  3. Il campo crd69_ticketurl contiene il collegamento al file del ticket caricato.

(Facoltativo) Passaggio 7: Abilitare la notifica tramite posta elettronica

Per inviare un messaggio di posta elettronica di conferma al partecipante:

  1. Rimuovere il commento dalla sezione "Invia messaggio di posta elettronica di conferma" nello script.
  2. Sostituire {senderUserId} con un ID utente valido abilitato alla cassetta postale (ad esempio, un account di servizio).
  3. Verificare che l'autorizzazione Mail.Send sia stata aggiunta e che l'amministratore abbia acconsentito.

Panoramica della logica del server
Crea la logica del server
Oggetti server
Come interagire con le tabelle di Dataverse usando la logica del server