Como interagir com o Microsoft Graph e o SharePoint usando a lógica do servidor

Este guia orienta você na configuração e teste do exemplo de lógica de servidor que integra o Power Pages com o Microsoft Graph e o SharePoint online.

Etapa 1: Baixe o pacote de exemplo

  1. Vá para o repositório https://github.com/microsoft/power-pages-samplesGitHub .
  2. Selecione Código > Download ZIP.
  3. Após o download, extraia o arquivo ZIP para uma pasta local, por exemplo: C:\PowerPages\ServerLogic
  4. Navegue até o caminho extraído: samples/server-logic/sharepoint-integration Esta pasta contém o pacote de event-registration.zip solução, que inclui os recursos do site do Power Pages que você importará em etapas posteriores.

Como alternativa, pode utilizar git clone, se preferir.

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

Etapa 2: Pré-requisitos

Antes de começar, certifique-se de que:

Etapa 3: Criar e configurar o aplicativo Entra ID

Você precisa de um registro de aplicativo para permitir que o código lógico do servidor seja autenticado no Microsoft Graph.

Criar o registo de aplicações

  1. Vá para o Portal do Azure e selecione Registros de aplicativos.
  2. Selecione + Novo registo.
  3. Forneça um nome (por exemplo, PowerPages-Graph-Integration).
  4. Escolha Contas apenas neste diretório organizacional.

    Observação

    Não é necessário fornecer um URI de redirecionamento para este exemplo.

  5. Selecione Register.

Configurar permissões de API

  1. No novo aplicativo, vá para Permissões> de APIAdicionar uma permissão.
  2. SelecionePermissões do Aplicativo>.
  3. Adicione as seguintes permissões:
    • Sites.ReadWrite.All (para operações em ficheiros do SharePoint)
    • Mail.Send (opcional – apenas necessário se você planeja ativar a seção de e-mail)
  4. Selecione Conceder consentimento de administrador para seu locatário.

Criar um segredo do cliente

  1. Vá para Certificados & segredos>Segredos do cliente.
  2. Selecione + Novo segredo do cliente.
  3. Introduza uma descrição e escolha um período de validade (por exemplo, seis meses).
  4. Selecione Adicionar e copie o valor gerado imediatamente — esta é a sua CLIENT_SECRET.

Coletar os valores necessários

A partir da sua aplicação do Azure:

  • ID do Cliente> CLIENT_ID
  • ID do Inquilino> TENANT_ID
  • Segredo do Cliente> SEGREDO_DO_CLIENTE

Etapa 4: Identificar o site e a pasta do SharePoint

O script carrega tíquetes de eventos gerados para um site do SharePoint.

  1. Identifique seu nome de host do SharePoint e caminho do site: Por exemplo: HOSTNAME = contoso.sharepoint.com SITE_PATH = /sites/EventSite
  2. Verifique se existe uma biblioteca de documentos chamada Documentos (padrão).

Etapa 5: Implantar o pacote

  1. Crie um novo site importando o site baixado recentemente do GitHub. Para saber como importar o site, consulte power-pages-solutions

  2. Durante a atualização do site, atualize os valores para variáveis de ambiente. Atualize os seguintes valores capturados nas etapas anteriores:

    • ID de Cliente
    • ID do Inquilino
    • Segredo do Cliente (Mantenha esse valor em um cofre de chaves e use-o na variável de ambiente. Para testes, você pode mantê-lo diretamente na variável de ambiente.)
    • HOSTNAME
    • SITE_PATH

Destaque do script: seção Configuração

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

Eles são carregados com segurança a partir das configurações do site do Power Pages (variáveis de ambiente).

Etapa 6: Testar a integração do SharePoint

O script processa envios de formulário de registro de eventos, adquire um token de acesso do Microsoft Graph, gera um tíquete HTML, carrega-o no SharePoint e cria um registro no Dataverse.

Destaque do script: Chamando o Microsoft Graph para token de acesso

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

Destaque do script: Enviando bilhete para o 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"
);

Após uma execução bem-sucedida:

  1. Um novo registro aparece no Dataverse em crd69_eventregistrations.
  2. Um ficheiro de pedido de suporte HTML é carregado para a sua pasta Documentos do SharePoint > Pedidos de suporte.
  3. O campo crd69_ticketurl contém o link para o arquivo de ticket carregado.

(Opcional) Etapa 7: Ativar a notificação por e-mail

Para enviar um e-mail de confirmação ao participante:

  1. Descomente a seção "Enviar e-mail de confirmação" no script.
  2. Substitua {senderUserId} por um ID de usuário habilitado para caixa de correio válido (por exemplo, uma conta de serviço).
  3. Verifique se a permissão Mail.Send foi adicionada e consentida pelo administrador.

Visão geral da lógica do servidor
Lógica do servidor de autor
Objetos de servidor
Como interagir com tabelas Dataverse usando a lógica do servidor