Visualizza file utente
Prima che un utente possa scaricare un file, è necessario visualizzare un elenco dei file disponibili. In questo modulo di apprendimento, i file si troveranno nella directory root di OneDrive for Business dell'utente. Per iniziare, è possibile trascinare uno o due file. È possibile accedere all'istanza di OneDrive for Business passando a https://www.office.com/, eseguendo l'accesso e selezionando l'icona di OneDrive.
Decidere quali autorizzazioni sono necessarie per l'app
Tutti i dati esposti da Microsoft Graph sono protetti. L'app deve disporre delle autorizzazioni appropriate concesse per accedervi. L'autorizzazione necessaria dipende dal tipo di informazioni a cui l'app deve accedere. Ad esempio, per accedere al calendario dell'utente, l'app deve disporre dell'autorizzazione Calendars.Read
. Per leggere i file di un utente, l'app richiede l'autorizzazione Files.Read
. Successivamente, quando è il momento di caricare i file, l'app dovrà disporre dell'autorizzazione Files.ReadWrite
. L'elenco esatto delle autorizzazioni necessarie per ogni operazione è disponibile nel riferimento all'API di Microsoft Graph.
Se l'app carica diversi tipi di dati, gli utenti devono concedere più autorizzazioni necessarie per accedere a queste informazioni. Nell'app, richiedere solo le autorizzazioni necessarie. In questo modulo, l'app richiede l'autorizzazione per leggere inizialmente i file e richiede l'autorizzazione di lettura/scrittura solo quando si prova a caricare un file. Questo modello è denominato consenso dinamico ed è il modo consigliato per richiedere le autorizzazioni. Con il consenso dinamico, gli utenti controllano i dati che condividono con le app utilizzate, riducendo al minimo i rischi per la sicurezza.
Specificare le autorizzazioni necessarie
L'elenco delle autorizzazioni concesse all'app viene inserito direttamente nel token di accesso. Lo standard OAuth le definisce ambiti. Quando l'applicazione usa Microsoft Authentication Library per ottenere il token di accesso, deve includere un elenco di ambiti nella richiesta a Microsoft Entra ID. Ogni operazione in Microsoft Graph ha un proprio elenco di ambiti organizzati dal meno privilegiato al più privilegiato. Ogni ambito funzionerà, quindi scegliere gli ambiti meno privilegiati che funzionano nelle operazioni utilizzate nell'applicazione.
L'applicazione di esempio archivia la richiesta corrente di Microsoft Authentication Library in una variabile globale denominata msalRequest
. Inizialmente, contiene una matrice vuota di ambiti.
const msalRequest = { scopes: [] };
Ecco la funzione helper utilizzata dall'applicazione di esempio per aggiungere altri ambiti alla richiesta.
function ensureScope (scope) {
if (!msalRequest.scopes.some((s) => s.toLowerCase() === scope.toLowerCase())) {
msalRequest.scopes.push(scope);
}
}
L'idea è che l'applicazione richieda le autorizzazioni quando ne ha bisogno. Ad esempio, ecco il codice per scaricare un elenco di file dalla cartella root di OneDrive for Business di un utente.
async function getFiles() {
ensureScope('files.read');
try {
const response = await graphClient
.api('/me/drive/root/children')
.select('id,name,folder,package')
.get();
return response.value;
} catch (error) {
console.error(error);
}
}
La chiamata a ensureScope()
assicura che l’autorizzazione files.read sia inclusa nel token di accesso che sarà usato per chiamare Microsoft Graph.
L'SDK di Microsoft Graph si occupa di chiamare Microsoft Authentication Library usando l'oggetto msalRequest
ed esegue questa operazione per ogni chiamata di Microsoft Graph. Anche se potrebbe sembrare che questa attività comporti uno spreco, non è così. Microsoft Authentication Library riutilizza automaticamente lo stesso token di accesso fino alla scadenza di quello precedente o alla modifica degli ambiti dell'autorizzazione. Nella parte superiore di graph.js, è possibile visualizzare il codice in cui è configurata questa istruzione.
const authProvider = {
getAccessToken: async () => {
return await getToken();
}
};
const graphClient = MicrosoftGraph.Client.initWithMiddleware({ authProvider });
Innanzitutto, il codice dichiara un authProvider
, ovvero un oggetto JSON che contiene la funzione getAccessToken()
. Questa funzione chiama getToken()
, che è una funzione nel file auth.js che chiama Microsoft Authentication Library. Se si vuole, è possibile verificarlo. L'oggettoauthProvider
viene passato all'SDK di Microsoft, che chiamerà getAccessToken()
ogni volta che è necessario, in modo che il codice non debba farlo.
Recuperare i file nella directory root di OneDrive dell'utente usando Microsoft Graph
Per ottenere questo elenco di file, utilizzare la risorsa /me/drive/root/children
. È più facile ottenere i file dalla cartella root della directory root di OneDrive dell'utente corrente perché Microsoft Graph fornisce collegamenti come /me
e /root
. Ad esempio, per enumerare i file nella cartella Documenti di un altro utente, è necessario cercare l'ID utente dell'utente e l'ID elemento della cartella /Documents e quindi accedere a /users/{user-id}/drive/items/{item-id}/children
.
Consiglio
Microsoft Graph consente l'accesso ai file in OneDrive, OneDrive for Business e SharePoint Online. Microsoft Teams e altri servizi Microsoft 365 archiviano i file in OneDrive for Business e SharePoint Online. Le operazioni sui file sono le stesse, ma le risorse (URL) sono leggermente diverse per ognuno di questi servizi.
Questa richiesta GET è espressa nell'SDK di Microsoft Graph come indicato di seguito:
const response = await graphClient
.api('/me/drive/root/children')
.get();
È possibile rendere la chiamata più efficiente specificando le colonne di dati necessarie. Questa attività viene gestita usando il parametro stringa $select= query
in REST (in base allo standard OData). L'SDK semplifica l'operazione fornendo una funzione select()
. Le funzioni possono essere concatenate per semplificare la lettura della richiesta.
const response = await graphClient
.api('/me/drive/root/children')
.select('id,name,folder,package')
.get();
Passaggi successivi
Mettere in pratica tutto ciò che si è appreso ed estendere l'app per visualizzare un elenco di file nella cartella root di OneDrive for Business dell'utente.