Outlook Graph API: permisos de concesión de usuarios

Creé un complemento de Outlook y lo cargué usando un archivo de manifiesto. Revisé la configuración en Azure para proporcionar permisos para la aplicación como se describe en la documentación https://docs.microsoft.com/en-us/office/dev/add-ins/develop/register-sso-add-in -aad-v2 . He otorgado permisos de Mail.Read dentro de Permisos de API. Cuando el complemento se usa por primera vez en Outlook, aparece una ventana que le pide al usuario que otorgue permisos para que la aplicación lea su perfil de usuario. ¿Cómo le pido al usuario que también conceda acceso para leer su correo según Graph Explorer? Estoy usando Angular 13 y .net core.

  const params: Office.AuthOptions = {
  allowSignInPrompt: true,
  //forMSGraphAccess: true, // removed for testing in dev environment
  allowConsentPrompt: true,

};

  OfficeRuntime.auth.getAccessToken(params).then((token) => { xxxxx}

Dentro del archivo de manifiesto;

      <WebApplicationInfo>
    <Id>My App Id</Id>
    <Resource>api://localhost:3000/My App Id</Resource>
    <Scopes>
      <Scope>Mail.Read</Scope>
      <Scope>Mail.Read.Shared</Scope>
    </Scopes>
  </WebApplicationInfo>

  <Permissions>ReadWriteMailbox</Permissions>

Mi código .net se ve así;

                var userAssertion = new UserAssertion(token, "urn:ietf:params:oauth:grant-type:jwt-bearer");
            string[] graphScopes = { "Mail.Read", "Mail.Read.Shared" };
            result = await client.AcquireTokenOnBehalfOf(graphScopes, userAssertion).ExecuteAsync();

Genero un token con éxito en Angular y lo envío a mi API de back-end, pero cuando intento acceder a un buzón de correo, aparece;

AADSTS70000: La solicitud fue denegada porque uno o más ámbitos solicitados no están autorizados o han caducado. El usuario primero debe iniciar sesión y conceder a la aplicación cliente acceso al ámbito solicitado.

Mirando Graph Explorer, tengo que otorgar permisos para Leer correo, si luego navego y administro aplicaciones y servicios, puedo ver que Graph Explorer tiene acceso a 'Leer sus correos electrónicos' mientras que mi aplicación de Outlook solo tiene 'Ver su perfil básico' .

¡Ayudar!

Salud

Jorge

Answer

AADSTS70000: The request was denied because one or more scopes requested are unauthorized or expired. The user must first sign in and grant the client application access to the requested scope.

Según comentó el usuario 3686667 , el error anterior se resolvió. Agregando este comentario Community wikipara ayudar a otros miembros de la comunidad:

I think the issue may have something to do with using a Microsoft account rather than a domain account. I tried testing using the Graph Explorer and you have to grant permissions to the the stuff you want the graph API to have access to - in my case Mail.Read. If I then go to look at my Microsoft account, and check which apps have permissions to my e-mail, profile etc I can see the Graph API has the access I accepted. I thought that since I had delegated permissions as an admin, the user would not then have to grant permissions manually. I've got it to work but it's not ideal.