Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze handleiding helpt u bij het instellen en testen van het serverlogicavoorbeeld dat Power Pages integreert met Microsoft Graph en SharePoint Online.
Stap 1: Het voorbeeldpakket downloaden
- Ga naar de GitHub-opslagplaats https://github.com/microsoft/power-pages-samples.
- Selecteer Code > .zip downloaden.
- Pak na het downloaden het ZIP-bestand uit naar een lokale map, bijvoorbeeld:
C:\PowerPages\ServerLogic - Navigeer naar het uitgepakte pad:
samples/server-logic/sharepoint-integrationDeze map bevat hetevent-registration.zipoplossingspakket, inclusief de Power Pages-siteresources die u in latere stappen gaat importeren.
U kunt ook git-kloon gebruiken als u wilt.
git clone https://github.com/microsoft/power-pages-samples.git
cd power-pages-samples/samples/server-logic/sharepoint-integration
Stap 2: Vereisten
Voordat u begint, moet u ervoor zorgen dat u het volgende hebt:
- Toegang tot Microsoft Entra ID (Azure AD) met toestemming om apps te registreren.
- Toegang tot een SharePoint Online-site (bijvoorbeeld https://contoso.sharepoint.com/sites/EventSite).
Stap 3: de Entra ID-toepassing maken en configureren
U hebt een app-registratie nodig om uw serverlogicacode te laten verifiëren bij Microsoft Graph.
De app-registratie maken
- Ga naar Azure Portal en selecteer App-registraties.
- Selecteer + Nieuwe registratie.
- Geef een naam op (bijvoorbeeld PowerPages-Graph-Integration).
- Kies Alleen accounts in deze organisatiedirectory.
Opmerking
U hoeft geen omleidings-URI voor dit voorbeeld op te geven.
- Selecteer Registreren.
API-machtigingen configureren
- Ga in de nieuwe app naar API-machtigingen>een machtiging toevoegen.
- Selecteer Microsoft Graph>toepassingsmachtigingen.
- Voeg de volgende machtigingen toe:
- Sites.ReadWrite.All (voor Bewerkingen van SharePoint-bestanden)
- Mail.Send (optioneel– alleen nodig als u van plan bent om de e-mailsectie in te schakelen)
- Selecteer Beheerdersmachtiging verlenen voor uw tenant.
Een clientgeheim maken
- Ga naar Certificaten en geheimen>Clientgeheimen.
- Selecteer + Nieuw clientgeheim.
- Voer een beschrijving in en kies een verloopperiode (bijvoorbeeld zes maanden).
- Selecteer Toevoegen en kopieer de gegenereerde waarde onmiddellijk. Dit is uw CLIENT_SECRET.
Vereiste waarden verzamelen
Vanuit uw Azure-app:
- Client-id> CLIENT_ID
- Tenant-id> TENANT_ID
- Client Secret> CLIENT_SECRET
Stap 4: Uw SharePoint-site en -map identificeren
Met het script worden gegenereerde gebeurtenistickets geüpload naar een SharePoint-site.
- Identificeer uw SharePoint-hostnaam en -sitepad: bijvoorbeeld: HOSTNAME =
contoso.sharepoint.comSITE_PATH =/sites/EventSite - Zorg ervoor dat er een documentbibliotheek met de naam Documenten bestaat (standaard).
Stap 5: Het pakket implementeren
Maak een nieuwe site door de onlangs gedownloade site te importeren vanuit GitHub. Zie power-pages-solutions voor meer informatie over het importeren van de site
Werk tijdens de site-upgrade de waarden voor omgevingsvariabelen bij. Werk de volgende waarden bij die u in de vorige stappen hebt vastgelegd:
- Client-ID
- Tenant-id
- Clientgeheim (bewaar deze waarde in een sleutelkluis en gebruik deze in de omgevingsvariabele. Voor het testen kunt u deze rechtstreeks in de omgevingsvariabele bewaren.)
- HOSTNAAM
- SITE_PATH
Scriptmarkering: Configuratiesectie
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");
Deze worden veilig geladen vanuit de site-instellingen van Power Pages (omgevingsvariabelen).
Stap 6: De SharePoint-integratie testen
Het script verwerkt verzendingen van gebeurtenisregistratieformulieren, verkrijgt een Microsoft Graph-toegangstoken, genereert een HTML-ticket, uploadt het naar SharePoint en maakt een record in Dataverse.
Scriptmarkering: Microsoft Graph aanroepen voor toegangstoken
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;
}
Scriptvermelding: Uploaden van ticket naar 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"
);
Na een geslaagde run:
- Er wordt een nieuwe record weergegeven in Dataverse onder crd69_eventregistrations.
- Er wordt een HTML-ticketbestand geüpload naar de map SharePoint Documents > Tickets .
- Het veld crd69_ticketurl bevat de koppeling naar het geüploade ticketbestand.
(Optioneel) Stap 7: e-mailmelding inschakelen
Een bevestigingsmail verzenden naar de deelnemer:
- Verwijder opmerkingen in de sectie Bevestigings-e-mail verzenden in het script.
- Vervang {senderUserId} door een geldige postvak-ingeschakelde gebruikers-id, bijvoorbeeld een serviceaccount.
- Zorg ervoor dat de machtiging Mail.Send is toegevoegd en dat de beheerder toestemming heeft gegeven.
Verwante informatie
Overzicht van serverlogica
Serverlogica ontwerpen
Server-objecten
Interactie met Dataverse-tabellen met behulp van serverlogica