Vorgehensweise: Interagieren mit Microsoft Graph und SharePoint mithilfe von Serverlogik

Dieses Handbuch führt Sie durch das Einrichten und Testen des Serverlogikbeispiels, das Power Pages in Microsoft Graph und SharePoint Online integriert.

Schritt 1: Herunterladen des Beispielpakets

  1. Wechseln Sie zum GitHub-Repository https://github.com/microsoft/power-pages-samples.
  2. Wählen Sie Code > ZIP herunterladen aus.
  3. Extrahieren Sie nach dem Herunterladen die ZIP-Datei in einen lokalen Ordner, z. B.: C:\PowerPages\ServerLogic
  4. Navigieren Sie zum extrahierten Pfad: samples/server-logic/sharepoint-integration Dieser Ordner enthält das event-registration.zip Lösungspaket, das die Power Pages-Websiteressourcen enthält, die Sie in späteren Schritten importieren werden.

Alternativ können Sie git Clone verwenden, wenn Sie dies bevorzugen.

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

Schritt 2: Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie folgendes haben:

Schritt 3: Erstellen und Konfigurieren der Entra-ID-Anwendung

Sie benötigen eine App-Registrierung, damit Ihr Serverlogikcode sich bei Microsoft Graph authentifizieren kann.

Die App-Registrierung erstellen

  1. Wechseln Sie zum Azure-Portal, und wählen Sie App-Registrierungen aus.
  2. Wählen Sie + Neue Registrierung aus.
  3. Geben Sie einen Namen an (z. B. PowerPages-Graph-Integration).
  4. Wählen Sie nur Konten in diesem Organisationsverzeichnis aus.

    Hinweis

    Sie müssen keinen Umleitungs-URI für dieses Beispiel bereitstellen.

  5. Wählen Sie Registrieren aus.

Konfigurieren von API-Berechtigungen

  1. Wechseln Sie in der neuen App zu API-Berechtigungen>zum Hinzufügen einer Berechtigung.
  2. Wählen Sie Microsoft> aus.
  3. Fügen Sie die folgenden Berechtigungen hinzu:
    • Sites.ReadWrite.All (für SharePoint-Dateivorgänge)
    • Mail.Send (optional – nur erforderlich, wenn Sie den E-Mail-Abschnitt aktivieren möchten)
  4. Wählen Sie Administratoreinwilligung gewähren für Ihren Mandanten aus.

Erstellen eines Clientgeheimnisses

  1. Wechseln Sie zu Zertifikaten und Geheimnissen>Client-Geheimnissen.
  2. Wählen Sie + Neuer geheimer Clientschlüssel aus.
  3. Geben Sie eine Beschreibung ein, und wählen Sie einen Ablaufzeitraum aus (z. B. sechs Monate).
  4. Wählen Sie "Hinzufügen" aus, und kopieren Sie den generierten Wert sofort– dies ist Ihre CLIENT_SECRET.

Sammeln erforderlicher Werte

Aus Ihrer Azure-App:

  • Client-ID> CLIENT_ID
  • Mandanten-ID> TENANT_ID
  • Geheimer Clientschlüssel> CLIENT_SECRET

Schritt 4: Identifizieren Ihrer SharePoint-Website und Ihres Ordners

Das Skript lädt generierte Ereignistickets auf eine SharePoint-Website hoch.

  1. Identifizieren Sie Ihren SharePoint-Hostnamen und Websitepfad: Beispiel: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. Stellen Sie sicher, dass eine Dokumentbibliothek namens "Dokumente " vorhanden ist (Standardeinstellung).

Schritt 5: Bereitstellen des Pakets

  1. Erstellen Sie eine neue Website, indem Sie die kürzlich heruntergeladene Website von GitHub importieren. Informationen zum Importieren der Website finden Sie unter power-pages-solutions

  2. Aktualisieren Sie während des Websiteupgrades die Werte für Umgebungsvariablen. Aktualisieren Sie die folgenden Werte, die Sie in vorherigen Schritten erfasst haben:

    • Client-ID
    • Mandanten-ID
    • Geheimer Clientschlüssel (Behalten Sie diesen Wert in einem Schlüsseltresor bei, und verwenden Sie ihn in der Umgebungsvariable. Zum Testen können Sie sie direkt in der Umgebungsvariable beibehalten.)
    • HOSTNAME
    • SITE_PATH

Skripthervorhebung: Konfigurationsabschnitt

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

Diese werden sicher aus den Power Pages-Websiteeinstellungen (Umgebungsvariablen) geladen.

Schritt 6: Testen der SharePoint-Integration

Das Skript verarbeitet Ereignisregistrierungsformularübermittlungen, erwirbt ein Microsoft Graph-Zugriffstoken, generiert ein HTML-Ticket, lädt es in SharePoint hoch und erstellt einen Datensatz in Dataverse.

Skripthighlight: Aufrufen von Microsoft Graph für Zugriffstoken

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

Skript-Hervorhebung: Hochladen des Tickets auf 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"
);

Nach erfolgreicher Ausführung:

  1. Unter crd69_eventregistrations wird in Dataverse ein neuer Datensatz angezeigt.
  2. Eine HTML-Ticketdatei wird in Ihren Ordner "Tickets für SharePoint-Dokumente > " hochgeladen.
  3. Das Feld crd69_ticketurl enthält den Link zur hochgeladenen Ticketdatei.

(Optional) Schritt 7: Aktivieren der E-Mail-Benachrichtigung

So senden Sie eine Bestätigungs-E-Mail an den Teilnehmer:

  1. Heben Sie die Kommentierung des Abschnitts Bestätigungs-E-Mail senden im Skript auf.
  2. Ersetzen Sie {senderUserId} durch eine gültige postfachfähige Benutzer-ID (z. B. ein Dienstkonto).
  3. Stellen Sie sicher, dass die Berechtigung "Mail.Send" hinzugefügt und von einem Administrator genehmigt wurde.

Übersicht über Die Serverlogik
Autorenserverlogik
Serverobjekte
Interaktion mit Dataverse-Tabellen mithilfe der Serverlogik