Criar uma web part do Microsoft Office SharePoint Online com o Kit de ferramentas do Microsoft Graph
Este artigo aborda como usar componentes do Microsoft Graph Toolkit em uma Web Part do lado do cliente do SharePoint. Os primeiros passos envolvem as seguintes etapas:
- Defina seu ambiente de desenvolvimento.
- Crie seu projeto da Web Part.
- Adicione os pacotes do Kit de Ferramentas do Microsoft Graph.
- Adicione o provedor do Microsoft Office SharePoint Online.
- Adicione os componentes.
- Configure as permissões.
- Configurar webpack
- Crie e implante sua web part.
- Teste sua web part.
Configure seu ambiente de desenvolvimento da Estrutura do SharePoint e crie uma nova web part
Siga as etapas para configurar seu ambiente de desenvolvimento Estrutura do SharePoint.
Criar seu projeto da Web Part
Siga as instruções para criar uma web part. Quando perguntado qual modelo você gostaria de usar, escolha React.
Importante
Você deve escolher React ao selecionar sua estrutura ao usar yo @microsoft/sharepoint
.
Adicionar os pacotes do Kit de Ferramentas do Microsoft Graph
O Microsoft Graph Toolkit publica vários pacotes necessários para criar uma web part Estrutura do SharePoint. A instalação dos @microsoft/mgt-element
pacotes , @microsoft/mgt-react
, @microsoft/mgt-sharepoint-provider
e @microsoft/mgt-spfx-utils
instala as dependências necessárias.
npm install @microsoft/mgt-element @microsoft/mgt-react @microsoft/mgt-sharepoint-provider @microsoft/mgt-spfx-utils
Adicionar o Provedor do Microsoft Office SharePoint Online
Os provedores do Kit de ferramentas do Microsoft Graph permitem autenticação e acesso ao Microsoft Graph para os componentes. Para saber mais, confira Usando os provedores. As web parts do SharePoint sempre existem em um contexto autenticado porque o usuário é autenticado para chegar à página que hospeda sua Web Part. Use este contexto para inicializar o provedor do Microsoft Office SharePoint Online.
Primeiro, adicione o provedor à sua web part. Localize o arquivo src\webparts\<your-project>\<your-web-part>.ts
na pasta do projeto e adicione a seguinte linha no início do arquivo, logo abaixo das instruções import
existentes:
import { Providers } from '@microsoft/mgt-element';
import { SharePointProvider } from "@microsoft/mgt-sharepoint-provider";
Em seguida, inicialize o provedor com o contexto autenticado dentro do onInit()
método de sua Web Part. No mesmo arquivo, adicione o seguinte código antes da linha public render(): void {
:
protected async onInit() {
if (!Providers.globalProvider) {
Providers.globalProvider = new SharePointProvider(this.context);
}
}
Configurar a disambiguation
Para garantir que sua Web Part funcione se houver várias soluções de Web Part usando o Microsoft Graph Toolkit em uma única página, você deve usar a disambiguation. Para obter mais informações, consulte a disambiguation.
Primeiro, atualize suas importações @microsoft/mgt-element
e adicione uma para o lazyLoadComponent
auxiliar.
import { Providers, customElementHelper } from "@microsoft/mgt-element";
import { lazyLoadComponent } from "@microsoft/mgt-spfx-utils";
Em seguida, atualize o onInit()
método da web part raiz para configurar a disambiguação. A cadeia de caracteres usada para disambiguation deve ser exclusiva para sua solução Estrutura do SharePoint:
protected async onInit(): Promise<void> {
if (!Providers.globalProvider) {
Providers.globalProvider = new SharePointProvider(this.context);
}
customElementHelper.withDisambiguation('contoso-hr-solution');
return super.onInit();
}
Atualizar a importação e a renderização do componente React
Primeiro, converta a importação do componente para usar React.lazy
. Localize a instrução import <WebPartName> from './components/<WebPartName>;
e atualize-a para o seguinte:
const MgtComponent = React.lazy(
() =>
import(/* webpackChunkName: 'mgt-react-component' */ "./components/<WebPartName>")
);
Em seguida, modifique o método renderizador para usar o lazyLoadComponent
auxiliar:
public render(): void {
const element = lazyLoadComponent<IHelloWorldProps>(MgtComponent, {
description: this.properties.description,
isDarkTheme: this._isDarkTheme,
environmentMessage: this._environmentMessage,
hasTeamsContext: !!this.context.sdks.microsoftTeams,
userDisplayName: this.context.pageContext.user.displayName
});
ReactDom.render(element, this.domElement);
}
Agora, sua web part deve ser assim:
import * as React from "react";
import * as ReactDom from "react-dom";
import { Version } from "@microsoft/sp-core-library";
import {
type IPropertyPaneConfiguration,
PropertyPaneTextField,
} from "@microsoft/sp-property-pane";
import { BaseClientSideWebPart } from "@microsoft/sp-webpart-base";
import { IReadonlyTheme } from "@microsoft/sp-component-base";
import { Providers, customElementHelper } from "@microsoft/mgt-element";
import { lazyLoadComponent } from "@microsoft/mgt-spfx-utils";
import { SharePointProvider } from "@microsoft/mgt-sharepoint-provider";
import * as strings from "HelloWorldWebPartStrings";
const HelloWorld = React.lazy(
() =>
import(
/* webpackChunkName: 'mgt-react-component' */ "./components/HelloWorld"
)
);
import { IHelloWorldProps } from "./components/IHelloWorldProps";
export interface IHelloWorldWebPartProps {
description: string;
}
export default class HelloWorldWebPart extends BaseClientSideWebPart<IHelloWorldWebPartProps> {
private _isDarkTheme: boolean = false;
private _environmentMessage: string = "";
public render(): void {
const element = lazyLoadComponent<IHelloWorldProps>(HelloWorld, {
description: this.properties.description,
isDarkTheme: this._isDarkTheme,
environmentMessage: this._environmentMessage,
hasTeamsContext: !!this.context.sdks.microsoftTeams,
userDisplayName: this.context.pageContext.user.displayName,
});
ReactDom.render(element, this.domElement);
}
protected async onInit(): Promise<void> {
if (!Providers.globalProvider) {
Providers.globalProvider = new SharePointProvider(this.context);
}
customElementHelper.withDisambiguation("contoso-hr-solution");
return super.onInit();
}
// [...] trimmed for brevity
}
Adicionar os componentes
Adicione os componentes ao componente React. Localize e abra o src\webparts\<your-project>\components\<your-component>.tsx
arquivo e adicione a importação para o componente que você deseja usar - nesse caso, o Person
componente - e atualize o render()
método para usar o componente Person. Agora seu componente deve ser assim:
import * as React from 'react';
import type { IHelloWorldProps } from './IHelloWorldProps';
import { Person } from '@microsoft/mgt-react';
export default class HelloWorld extends React.Component<IHelloWorldProps, {}> {
public render(): React.ReactElement<IHelloWorldProps> {
return (<Person personQuery="me" view="twolines" />);
}
}
Ou se preferir usar React Componentes Funcionais:
import * as React from 'react';
import type { IHelloWorldProps } from './IHelloWorldProps';
import { Person, ViewType } from '@microsoft/mgt-react';
const HelloWorld = (props: IHelloWorldProps): React.ReactElement => <Person personQuery="me" view={ViewType.twolines} />;
export default HelloWorld;
Configurar as permissões
Para chamar o Microsoft Graph de seu aplicativo da Estrutura do SharePoint, você precisa solicitar as permissões necessárias em seu pacote de solução e um administrador de locatário do Microsoft 365 precisa aprovar as permissões solicitadas.
Para adicionar as permissões ao seu pacote de solução, localize e abra o arquivo config\package-solution.json
e defina:
"isDomainIsolated": false,
Logo abaixo dessa linha, adicione a seguinte linha:
"webApiPermissionRequests":[],
Determine quais permissões do Microsoft API do Graph que você precisa depender dos componentes que você está usando. A página de documentação de cada componente fornece uma lista das permissões que o componente requer. Você precisará adicionar cada permissão necessária a webApiPermissionRequests
. Por exemplo, se você estiver usando o componente Person e o componente Agenda, seu webApiPermissionRequests
pode ser parecido com:
"webApiPermissionRequests": [
{
"resource": "Microsoft Graph",
"scope": "User.Read"
},
{
"resource": "Microsoft Graph",
"scope": "Calendars.Read"
}
]
Configurar webpack
Para criar sua Web Part, a configuração do webpack Estrutura do SharePoint deve ser atualizada para lidar corretamente com JavaScript moderno com encadeamento opcional e agrupamento nullish por meio de transformações adicionais do Babel.
Instalar pacotes Babel
Para lidar corretamente com dependências que emitem código baseado em ES2021, um carregador babel e algumas transformações precisam ser adicionados como dependências de desenvolvimento ao projeto.
npm i --save-dev babel-loader@8.3.0 @babel/plugin-transform-optional-chaining @babel/plugin-transform-nullish-coalescing-operator @babel/plugin-transform-logical-assignment-operators
Modificar a configuração do webpack
Estrutura do SharePoint fornece um modelo de extensibilidade para modificar a configuração do webpack usada para empacotar as web parts. Localize e abra gulpfile.js
. Adicionar o código a seguir acima da linha que contém build.initialize(require('gulp'));
const path = require("path");
const litFolders = [
`node_modules${path.sep}lit${path.sep}`,
`node_modules${path.sep}@lit${path.sep}`,
`node_modules${path.sep}lit-html${path.sep}`
];
build.configureWebpack.mergeConfig({
additionalConfiguration: generatedConfiguration => {
generatedConfiguration.module.rules.push({
test: /\.js$/,
// only run on lit packages
include: resourcePath =>
litFolders.some(litFolder => resourcePath.includes(litFolder)),
use: {
loader: 'babel-loader',
options: {
plugins: [
'@babel/plugin-transform-optional-chaining',
'@babel/plugin-transform-nullish-coalescing-operator',
'@babel/plugin-transform-logical-assignment-operators'
]
}
}
});
return generatedConfiguration;
}
});
Isso garante que o código da lit
biblioteca seja processado corretamente pela cadeia de build Estrutura do SharePoint.
Construir e implantar sua web part
Agora, você criará seu aplicativo e o implantará no SharePoint. Crie seu aplicativo executando os seguintes comandos:
gulp build
gulp bundle
gulp package-solution
sharepoint/solution
Na pasta, há um novo .sppkg
arquivo. Você precisa carregar esse arquivo no catálogo de aplicativos do SharePoint Online. Vá para a página Mais recursos do Centro de Administração do SharePoint Online. Selecione Abrirem Aplicativos e, em seguida, selecione Catálogo de Aplicativos e Distribuir aplicativos para o SharePoint. Carregue seu .sppkg
arquivo e selecione Implantar.
Em seguida, você precisa aprovar as permissões como um administrador.
Vá para o seu Centro de administração do SharePoint Online. Na navegação à esquerda, selecione Avançado e depois Acesso à API. Você deve ver as solicitações pendentes para cada uma das permissões adicionadas ao seu arquivoconfig\package-solution.json
. Selecione e aprove cada permissão.
Testar sua web part
Agora você está pronto para adicionar sua Web Part a uma página do SharePoint e testá-la. Você precisará usar o workbench hospedado para testar web parts que usam o Kit de Ferramentas do Microsoft Graph porque os componentes precisam do contexto autenticado para chamar o Microsoft Graph. Você pode encontrar seu workbench hospedado em https://< YOUR_TENANT.sharepoint.com/_layouts/15/workbench.aspx>.
Abra o config\serve.json
arquivo em seu projeto e substitua o valor de initialPage
pela URL do seu workbench hospedado:
"initialPage": "https://<YOUR_TENANT>.sharepoint.com/_layouts/15/workbench.aspx",
Salve o arquivo e execute o seguinte comando no console para criar e visualizar sua web part:
gulp serve
O workbench hospedado é aberto automaticamente no navegador. Adicione sua web part à página e você deverá vê-la com os componentes do Kit de ferramentas do Microsoft Graph em ação! Contanto que o comando gulp serve ainda esteja em execução em seu console, você pode continuar a fazer edições em seu código e, em seguida, apenas atualizar seu navegador para ver as alterações.
Próximos passos
- Confira este tutorial passo a passo sobre como criar uma Web Part do SharePoint.
- Experimente os componentes do playground.
- Faça uma pergunta no Stack Overflow.
- Relate bugs ou deixe uma solicitação de recurso no GitHub.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de