Acessar eventos do calendário de um usuário usando o Microsoft Graph

Concluído

Nesta unidade, você aprenderá a exibir os eventos de calendário de um usuário para a próxima semana. Você também aprenderá consultar eventos de dados por um determinado período e usar conceitos como selecionar e ordenar para exibir as informações como você deseja.

Decidir quais permissões seu aplicativo precisa

Todos os dados expostos por Microsoft Graph são protegidos. A sua aplicação tem de ter as permissões certas concedidas para aceder à mesma. A permissão necessária depende do tipo de informação que seu aplicativo precisa acessar. Por exemplo, para aceder ao calendário do utilizador, a sua aplicação tem de ter a permissão Calendars.Read . A lista exata das permissões necessárias para cada operação está disponível na referência Microsoft Graph API.

Se seu aplicativo carregar diferentes tipos de dados, os usuários deverão conceder a ele várias permissões necessárias para acessar essas informações. Em seu aplicativo, solicite apenas as permissões necessárias. Neste módulo, a sua aplicação pede permissão para ler o nome do utilizador inicialmente e pede para ler o respetivo calendário apenas quando seleciona o botão para mostrar os eventos. Esse padrão é chamado dee é a maneira recomendada de solicitar permissões. Com o consentimento dinâmico, os usuários controlam os dados que compartilham com os aplicativos que usam, o que minimiza os riscos de segurança.

Especificar as permissões necessárias

A lista de permissões concedidas ao seu aplicativo é inserida diretamente no token de acesso. O padrão OAuth os chama escopos. Quando a sua aplicação utiliza a Biblioteca de Autenticação da Microsoft para obter o token de acesso, tem de incluir uma lista de âmbitos no pedido para o Microsoft Entra ID. Cada operação no Microsoft Graph tem sua própria lista de escopos. Se o token de acesso não tiver um deles, o pedido é negado.

O aplicativo de exemplo armazena a solicitação atual da Biblioteca de Autenticação da Microsoft em uma variável global chamada msalRequest. Inicialmente, ele contém uma matriz vazia de escopos.

const msalRequest = { scopes: [] };

Aqui está a função auxiliar usada pelo aplicativo de exemplo para adicionar mais escopos à solicitação.

function ensureScope (scope) {
  if (!msalRequest.scopes.some((s) => s.toLowerCase() === scope.toLowerCase())) {
    msalRequest.scopes.push(scope);
  }
}

Ao chamar Microsoft Graph para recuperar dados, você garante que as permissões necessárias sejam incluídas chamando a função auxiliar.

async function getEvents() {
  ensureScope('Calendars.read');
  // ...
}

Recuperar eventos de calendário de um usuário por um determinado período de tempo

Para obter os eventos de calendário de um usuário Microsoft Graph, chame o ponto de extremidade /me/calendarview como mencionado anteriormente. Ele retorna uma lista de ocorrências e instâncias individuais de eventos de calendário do calendário padrão do usuário conectado. Você pode chamar Microsoft Graph de extremidade usando o SDK do Microsoft Graph para especificar o ponto de extremidade e o tipo de solicitação que você deseja executar.

Para mostrar apenas os eventos da agenda da próxima semana, use a seguinte consulta para passar o intervalo de tempo dos resultados:

graphClient
    .api('/me/calendarview')
    .query(`startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()}`);

Aqui, dateNow é a data atual e dateNextWeek sete dias adicionados à data atual para obter a janela de uma semana.

Minimizar a quantidade de dados que Microsoft Graph recupera e transfere melhora significativamente o desempenho do aplicativo. O select método pode ser usado para selecionar propriedades específicas nos resultados que o aplicativo usará. As propriedades a serem retornadas são passadas como uma lista separada por vírgulas para select:

graphClient
    .api('/me/calendarview')
    .query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
    .select('subject,start,end');

Utilize o orderby método para especificar como ordenar os itens no resultado. Para classificar por vários campos, especifique uma lista de campos separados por vírgula. Também pode especificar se pretende ordenar os itens por ordem ascendente ou descendente ao acrescentar a asc palavra-chave ou desc à consulta.

Neste aplicativo, você solicitará os dados pelo campo Iniciar em ordem crescente. Essa ordem será o padrão se nenhuma palavra-chave, como asc ou desc, for especificada:

graphClient
    .api('/me/calendarview')
    .query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
    .select('subject,start,end')
    .orderby('Start/DateTime');

Veja como fica a chamada Microsoft Graph final.

graphClient
    .api('/me/calendarview')
    .query(` startDateTime=${dateNow.toISOString()}&endDateTime=${dateNextWeek.toISOString()} `)
    .select('subject,start,end')
    .orderby('Start/DateTime')
    .get();