Kaip sąveikauti su "Microsoft Graph" ir "SharePoint" naudojant serverio logiką

Šiame vadove paaiškinama, kaip nustatyti ir išbandyti serverio logikos pavyzdį, kuris integruoja "Power Pages" su "Microsoft Graph" ir "SharePoint Online".

1 veiksmas: atsisiųskite paketo pavyzdį

  1. Eikite į "GitHub" saugyklą https://github.com/microsoft/power-pages-samples.
  2. Pasirinkite Kodo > atsisiuntimas ZIP.
  3. Atsisiuntę išskleiskite ZIP failą į vietinį aplanką, pavyzdžiui: C:\PowerPages\ServerLogic
  4. Eikite į ištrauktą kelią: samples/server-logic/sharepoint-integration Šiame aplanke event-registration.zip yra sprendimo paketas, kuriame yra "Power Pages" svetainės ištekliai, kuriuos importuosite atlikdami vėlesnius veiksmus.

Arba, jei norite, naudokite git clone.

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

2 žingsnis: Būtinosios sąlygos

Prieš pradėdami įsitikinkite, kad turite:

3 veiksmas: sukurkite ir sukonfigūruokite "Entra ID" programą

Jums reikia programos registracijos, kad serverio loginis kodas galėtų autentifikuotis naudojant Microsoft Graph.

Sukurkite programėlės registraciją

  1. Eikite į "Azure" portalą ir pasirinkite Programų registracijos.
  2. Pasirinkite + Nauja registracija.
  3. Pateikite pavadinimą (pvz., PowerPages-Graph-Integration).
  4. Pasirinkite Tik šio organizacijos katalogo paskyros.

    Pastaba.

    Jums nereikia pateikti šio pavyzdžio peradresavimo URI.

  5. Pasirinkite Registruoti.

Konfigūruoti API teises

  1. Naujoje programoje eikite į API leidimai>Leidimo pridėjimas.
  2. Pasirinkite "Microsoft Graph>"programos teises.
  3. Įtraukite šias teises:
    • Sites.ReadWrite.All (SharePoint failų operacijoms)
    • Mail.Send (neprivaloma – reikalinga tik tuo atveju, jei planuojate įjungti el. pašto skyrių)
  4. Pasirinkite Suteikti nuomotojo administratoriaus sutikimą .

Kliento paslapties kūrimas

  1. Eikite į Sertifikatai ir paslaptys>Kliento paslaptys.
  2. Pasirinkite + Nauja kliento paslaptis.
  3. Įveskite aprašą ir pasirinkite galiojimo laikotarpį (pvz., šeši mėnesiai).
  4. Pasirinkite Įtraukti ir nedelsdami nukopijuokite sugeneruotą reikšmę – tai jūsų CLIENT_SECRET.

Surinkite reikiamas vertes

Iš "Azure" programos:

  • Kliento ID> CLIENT_ID
  • Nuomotojo ID> TENANT_ID
  • Kliento paslaptis> CLIENT_SECRET

4 veiksmas: "SharePoint" svetainės ir aplanko identifikavimas

Scenarijus nusiunčia sugeneruotus įvykių bilietus į "SharePoint" svetainę.

  1. Nustatykite "SharePoint" pagrindinio kompiuterio pavadinimą ir svetainės kelią: pvz.: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. Įsitikinkite, kad yra dokumentų biblioteka, pavadinta Dokumentai (numatytasis).

5 veiksmas: paketo diegimas

  1. Sukurkite naują svetainę importuodami neseniai atsisiųstą svetainę iš "GitHub". Norėdami sužinoti, kaip importuoti svetainę, žr. power-pages-solutions

  2. Atnaujindami svetainę atnaujinkite aplinkos kintamųjų reikšmes. Atnaujinkite šias reikšmes, kurias užfiksavote atlikdami ankstesnius veiksmus:

    • Kliento ID
    • Nuomotojo ID
    • Kliento paslaptis (Laikykite šią reikšmę raktų saugykloje ir naudokite ją aplinkos kintamajame. Norėdami testuoti, galite jį laikyti tiesiogiai aplinkos kintamajame.)
    • PAGRINDINIO KOMPIUTERIO PAVADINIMAS
    • SITE_PATH

Scenarijaus paryškinimas: konfigūracijos skyrius

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

Jie saugiai įkeliami iš "Power Pages" svetainės parametrų (aplinkos kintamųjų).

6 veiksmas: išbandykite "SharePoint" integravimą

Scenarijus apdoroja įvykių registracijos formų pateikimus, gauna "Microsoft Graph" prieigos atpažinimo ženklą, sugeneruoja HTML bilietą, įkelia jį į "SharePoint" ir sukuria įrašą "Dataverse".

Scenarijaus paryškinimas: Microsoft Graph iškviečiamas prieigos atpažinimo ženklas

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

Scenarijaus paryškinimas: bilieto nusiuntimas į "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"
);

Po sėkmingo bėgimo:

  1. Naujas įrašas rodomas "Dataverse " dalyje crd69_eventregistrations.
  2. HTML bilieto failas įkeliamas į " SharePoint" dokumentų > bilietų aplanką.
  3. Lauke crd69_ticketurl yra nuoroda į įkeltą bilieto failą.

(Pasirinktinai) 7 veiksmas: įgalinkite pranešimą el. paštu

Norėdami išsiųsti dalyviui patvirtinimo el. laišką:

  1. Panaikinkite scenarijaus skilties "Siųsti patvirtinimo el. laišką" komentarą.
  2. Pakeiskite {senderUserId} galiojančiu pašto dėžutės vartotojo ID (pvz., tarnybos abonementu).
  3. Įsitikinkite, kad Mail.Send leidimas yra pridėtas ir administratorius sutiko.

Serverio logikos apžvalga
Autoriaus serverio logika
Serverio objektai
Kaip sąveikauti su "Dataverse" lentelėmis naudojant serverio logiką