Provedor personalizado

Se você tiver um código de autenticação existente em seu aplicativo, poderá criar um provedor personalizado para habilitar a autenticação e o acesso ao Microsoft Graph para componentes do Microsoft Graph Toolkit. Há duas maneiras de criar provedores personalizados:

  • Criar um novo SimpleProvider passando uma função para obter um token de acesso
  • Estender a IProvider classe abstrata

Este artigo descreve cada abordagem com mais detalhes.

SimpleProvider

Instancie a SimpleProvider classe passando uma função que retornará um token de acesso para escopos passados.

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

Além disso, você também pode fornecer uma opção login e logout funções que podem lidar com a entrada e sair chamadas do componente Logon .

Importante

Para indicar aos componentes que eles podem começar a chamar as APIs do Microsoft Graph depois que um usuário entrar com êxito, você precisa chamar Providers.setState(ProviderState.SignedIn). Um exemplo disso é mostrado na função abaixo login .

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

Gerenciar estado

Para que os componentes estejam cientes do estado do provedor, você precisará chamar o provider.setState(state: ProviderState) método sempre que o estado for alterado. Por exemplo, quando o usuário entrar, chame provider.setState(ProviderState.SignedIn). O ProviderState enum define três estados, conforme mostrado.

export enum ProviderState {
  Loading,
  SignedOut,
  SignedIn
}

IProvider

Você pode estender a IProvider classe abstrata para criar seu próprio provedor.

Estado

Um provedor deve acompanhar o estado de autenticação e atualizar os componentes quando o estado for alterado. A IProvider classe já implementa o onStateChanged(eventHandler) manipulador e a state: ProviderState propriedade. Você só precisa usar o setState(state:ProviderState) método em sua implementação para atualizar o estado quando ele for alterado. Atualizar o estado disparará o stateChanged evento e atualizará todos os componentes automaticamente.

Logon/Logon

Se o provedor fornecer funcionalidade de logon ou logon, implemente os login(): Promise<void> métodos e logout(): Promise<void> . Esses métodos são opcionais.

Token de acesso

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

Graph

Os componentes usam o SDK javascript do Microsoft Graph para todas as chamadas para o Microsoft Graph. Seu provedor deve disponibilizar o SDK por meio da graph propriedade. No construtor, crie uma nova Graph instância, conforme mostrado.

this.graph = new Graph(this);

A Graph classe é um wrapper leve na parte superior do SDK do Microsoft Graph.

Exemplo

Todos os provedores estendem a IProvider classe abstrata. Para obter exemplos, dê uma olhada no código-fonte de qualquer um dos provedores existentes.

Definir o provedor global

Os componentes usam a Providers.globalProvider propriedade para acessar um provedor. Depois de criar seu próprio provedor, defina essa propriedade como seu provedor.

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

Providers.globalProvider = myProvider;

Todos os componentes serão notificados do novo provedor e começarão a usá-los.