Compartilhar via


Provedor personalizado

Cuidado

O Toolkit do Microsoft Graph foi preterido. O período de reforma começa a 1 de setembro de 2025, com a reforma completa prevista para 28 de agosto de 2026. Os programadores devem migrar para utilizar os SDKs do Microsoft Graph ou outras ferramentas suportadas do Microsoft Graph para criar experiências Web. Para obter mais informações, veja o anúncio de preterição.

Se tiver código de autenticação existente na sua aplicação, pode criar um fornecedor personalizado para ativar a autenticação e o acesso aos componentes do Microsoft Graph para Microsoft Graph Toolkit. Existem duas formas de criar fornecedores personalizados:

  • Criar um novo SimpleProvider ao transmitir uma função para obter um token de acesso
  • Expandir a IProvider classe abstrata

Este artigo descreve cada abordagem mais detalhadamente.

SimpleProvider

Instanciar a SimpleProvider classe ao transmitir uma função que devolverá um token de acesso para âmbitos transmitidos.

let provider = new SimpleProvider((scopes: string[]) => {
  // return a promise with accessToken
});

Além disso, também pode fornecer funções e logout opcionais login que podem processar as chamadas de início de sessão e de fim de sessão a partir do componente De início de sessão.

Importante

Para indicar aos componentes que podem começar a chamar as APIs do Microsoft Graph depois de um utilizador iniciar sessão com êxito, tem de chamar Providers.setState(ProviderState.SignedIn). Um exemplo disto é mostrado na função login abaixo.

function getAccessToken(scopes: string[]) {
  // return a promise with accessToken string
}

function login() {
  //login code
  Providers.globalProvider.setState(ProviderState.SignedIn)
}

function logout() {
  // logout code
}

let provider = new SimpleProvider(getAccessToken, login, logout);

Gerir estado

Para que os componentes estejam cientes do estado do fornecedor, terá de chamar o provider.setState(state: ProviderState) método sempre que o estado for alterado. Por exemplo, quando o utilizador tiver sessão iniciada, chame provider.setState(ProviderState.SignedIn). A ProviderState enumeração define três estados, conforme mostrado.

export enum ProviderState {
  Loading,
  SignedOut,
  SignedIn
}

IProvider

Pode expandir a IProvider classe abstrata para criar o seu próprio fornecedor.

Estado

Um fornecedor tem de controlar o estado de autenticação e atualizar os componentes quando o estado for alterado. A IProvider classe já implementa o onStateChanged(eventHandler) processador e a state: ProviderState propriedade . Só precisa de utilizar o setState(state:ProviderState) método na sua implementação para atualizar o estado quando este for alterado. Atualizar o estado irá acionar o stateChanged evento e atualizar todos os componentes automaticamente.

Iniciar sessão/Terminar sessão

Se o seu fornecedor fornecer a funcionalidade de início de sessão ou fim de sessão, implemente os login(): Promise<void> métodos e logout(): Promise<void> . Estes métodos são opcionais.

Token de acesso

Tem de implementar o getAccessToken({'scopes': scopes[]}) : Promise<string> método . Este método é utilizado para obter um token válido antes de cada chamada para o Microsoft Graph.

Graph

Os componentes utilizam o SDK Javascript do Microsoft Graph para todas as chamadas para o Microsoft Graph. O seu fornecedor tem de disponibilizar o SDK através da graph propriedade . No construtor, crie uma nova Graph instância, conforme mostrado.

this.graph = new Graph(this);

A Graph classe é um wrapper leve sobre o SDK do Microsoft Graph.

Exemplo

Todos os fornecedores expandem a IProvider classe abstrata. Por exemplo, veja o código fonte de qualquer um dos fornecedores existentes.

Definir o fornecedor global

Os componentes utilizam a Providers.globalProvider propriedade para aceder a um fornecedor. Depois de criar o seu próprio fornecedor, defina esta propriedade para o seu fornecedor.

import { Providers } from '@microsoft/mgt';

Providers.globalProvider = myProvider;

Todos os componentes serão notificados do novo fornecedor e começarão a utilizá-lo.