Instrukcje: interakcja z programem Microsoft Graph i programem SharePoint przy użyciu logiki serwera

Ten przewodnik przeprowadzi Cię przez proces konfigurowania i testowania przykładu logiki serwera, który integruje usługi Power Pages z usługami Microsoft Graph i SharePoint Online.

Krok 1. Pobieranie przykładowego pakietu

  1. Przejdź do repozytorium https://github.com/microsoft/power-pages-samplesGitHub .
  2. Wybierz kolejno pozycje Kod > Pobierz plik ZIP.
  3. Po pobraniu wyodrębnij plik ZIP do folderu lokalnego, na przykład: C:\PowerPages\ServerLogic
  4. Przejdź do wyodrębnionej ścieżki: samples/server-logic/sharepoint-integration Ten folder zawiera event-registration.zip pakiet rozwiązania, który zawiera zasoby witryny Power Pages, które zostaną zaimportowane w kolejnych krokach.

Możesz też użyć polecenia git clone, jeśli wolisz.

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

Krok 2. Wymagania wstępne

Przed rozpoczęciem upewnij się, że masz następujące elementy:

Krok 3. Tworzenie i konfigurowanie aplikacji Entra ID

Potrzebujesz rejestracji aplikacji, aby zezwolić kodowi logiki serwera na uwierzytelnianie w programie Microsoft Graph.

Tworzenie rejestracji aplikacji

  1. Przejdź do witryny Azure Portal i wybierz pozycję Rejestracje aplikacji.
  2. Wybierz + Nowa rejestracja.
  3. Podaj nazwę (na przykład PowerPages—Graph-Integration).
  4. Wybierz Konta tylko w tym katalogu organizacyjnym.

    Uwaga / Notatka

    Nie musisz podawać adresu URI przekierowania dla tego przykładu.

  5. Wybierz pozycję Zarejestruj.

Konfiguracja uprawnień API

  1. W nowej aplikacji przejdź do pozycji Uprawnienia interfejsu API>Dodaj uprawnienie.
  2. Wybierz Microsoft Graph>Uprawnienia aplikacji.
  3. Dodaj następujące uprawnienia:
    • Sites.ReadWrite.All (dla operacji na plikach programu SharePoint)
    • Mail.Send (opcjonalnie — wymagane tylko wtedy, gdy planujesz włączyć sekcję wiadomości e-mail)
  4. Wybierz Udziel zgody administratora dla swojego dzierżawcy.

Utwórz tajny kod klienta

  1. Przejdź do Certyfikaty i tajemnice>Tajniki klienta.
  2. Wybierz pozycję + Nowe wpisy tajne klienta.
  3. Wprowadź opis i wybierz okres wygaśnięcia (na przykład sześć miesięcy).
  4. Wybierz pozycję Dodaj i skopiuj wygenerowaną wartość natychmiast — jest to CLIENT_SECRET.

Zbieranie wymaganych wartości

Z poziomu aplikacji platformy Azure:

  • Identyfikator klienta> CLIENT_ID
  • Identyfikator dzierżawcy> TENANT_ID
  • Client Secret (Tajny klienta)> CLIENT_SECRET

Krok 4. Identyfikowanie witryny i folderu programu SharePoint

Skrypt przekazuje wygenerowane bilety zdarzeń na witrynę programu SharePoint.

  1. Zidentyfikuj nazwę hosta programu SharePoint i ścieżkę witryny: na przykład: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. Upewnij się, że istnieje biblioteka dokumentów o nazwie Dokumenty (ustawienie domyślne).

Krok 5. Wdrażanie pakietu

  1. Utwórz nową witrynę, importując ostatnio pobraną witrynę z usługi GitHub. Aby dowiedzieć się, jak zaimportować witrynę, zobacz power-pages-solutions

  2. Podczas aktualizacji strony zaktualizuj wartości zmiennych środowiskowych. Zaktualizuj następujące wartości przechwycone w poprzednich krokach:

    • identyfikator klienta
    • Identyfikator najemcy
    • Klucz tajny klienta (zachowaj tę wartość w magazynie kluczy i użyj jej w zmiennej środowiskowej. Na potrzeby testowania można zachować go bezpośrednio w zmiennej środowiskowej.
    • NAZWA HOSTA
    • SITE_PATH

Wyróżnienie w skrypcie: sekcja konfiguracji

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

Są one bezpiecznie ładowane z ustawień witryny Power Pages(zmiennych środowiskowych).

Krok 6. Testowanie integracji z programem SharePoint

Skrypt przetwarza przesyłanie formularzy rejestracji zdarzeń, uzyskuje token dostępu programu Microsoft Graph, generuje bilet HTML, przekazuje go do programu SharePoint i tworzy rekord w usłudze Dataverse.

Wyróżnienie skryptu: wywoływanie programu Microsoft Graph na potrzeby tokenu dostępu

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

Wyróżnienie skryptu: wysyłanie zgłoszenia do 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 pomyślnym uruchomieniu:

  1. Nowy rekord pojawi się w Dataverse pod crd69_eventregistrations.
  2. Plik biletu HTML jest przekazywany do folderu Dokumenty SharePoint > Bilety.
  3. Pole crd69_ticketurl zawiera link do przekazanego pliku biletu.

(Opcjonalnie) Krok 7. Włączanie powiadomienia e-mail

Aby wysłać wiadomość e-mail z potwierdzeniem do uczestnika:

  1. Usuń komentarz z sekcji "Wyślij wiadomość e-mail z potwierdzeniem" w skrycie.
  2. Zastąp element {senderUserId} prawidłowym identyfikatorem użytkownika z włączoną skrzynką pocztową (na przykład kontem usługi).
  3. Upewnij się, że dodano uprawnienie Mail.Send i udzielono zgody administratora.

Omówienie logiki serwera
Tworzenie logiki serwera
obiekty serwera
Jak wchodzić w interakcje z tabelami Dataverse przy użyciu logiki serwera