Proveedor personalizado

Si tiene código de autenticación existente en la aplicación, puede crear un proveedor personalizado para habilitar la autenticación y el acceso a los componentes de Microsoft Graph for Microsoft Graph Toolkit. Hay dos maneras de crear proveedores personalizados:

  • Cree una nueva SimpleProvider pasando una función para obtener un token de acceso.
  • Extensión de la IProvider clase abstracta

En este artículo se describe cada enfoque con más detalle.

SimpleProvider

Cree una instancia de la SimpleProvider clase pasando una función que devolverá un token de acceso para los ámbitos pasados.

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

Además, también puede proporcionar una función opcional login y logout que pueda controlar las llamadas de inicio de sesión y cierre de sesión desde el componente Inicio de sesión .

Importante

Para indicar a los componentes que pueden empezar a llamar a las API de Microsoft Graph después de que un usuario inicie sesión correctamente, debe llamar Providers.setState(ProviderState.SignedIn)a . Un ejemplo de esto se muestra en la login función siguiente.

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

Administrar estado

Para que los componentes tengan en cuenta el estado del proveedor, deberá llamar al provider.setState(state: ProviderState) método cada vez que cambie el estado. Por ejemplo, cuando el usuario haya iniciado sesión, llame a provider.setState(ProviderState.SignedIn). La ProviderState enumeración define tres estados, como se muestra.

export enum ProviderState {
  Loading,
  SignedOut,
  SignedIn
}

IProvider

Puede ampliar la IProvider clase abstracta para crear su propio proveedor.

Estado

Un proveedor debe realizar un seguimiento del estado de autenticación y actualizar los componentes cuando cambia el estado. La IProvider clase ya implementa el onStateChanged(eventHandler) controlador y la state: ProviderState propiedad . Solo tiene que usar el método en la setState(state:ProviderState) implementación para actualizar el estado cuando cambia. Al actualizar el estado, se activará el stateChanged evento y se actualizarán todos los componentes automáticamente.

Inicio de sesión o cierre de sesión

Si el proveedor proporciona la funcionalidad de inicio de sesión o cierre de sesión, implemente los login(): Promise<void> métodos y logout(): Promise<void> . Estos métodos son opcionales.

Token de acceso

Debe implementar el getAccessToken({'scopes': scopes[]}) : Promise<string> método . Este método se usa para obtener un token válido antes de cada llamada a Microsoft Graph.

Graph

Los componentes usan el SDK de JavaScript de Microsoft Graph para todas las llamadas a Microsoft Graph. El proveedor debe hacer que el SDK esté disponible a través de la graph propiedad . En el constructor, cree una nueva Graph instancia, como se muestra.

this.graph = new Graph(this);

La Graph clase es un contenedor ligero sobre el SDK de Microsoft Graph.

Ejemplo

Todos los proveedores amplían la IProvider clase abstracta. Por ejemplo, eche un vistazo al código fuente de cualquiera de los proveedores existentes.

Establecer el proveedor global

Los componentes usan la Providers.globalProvider propiedad para acceder a un proveedor. Después de crear su propio proveedor, establezca esta propiedad en su proveedor.

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

Providers.globalProvider = myProvider;

Todos los componentes recibirán una notificación del nuevo proveedor y comenzarán a usarlo.