Utilisation de l’API OneDrive dans les applications JavaScript (prise en charge CORS)
L’API OneDrive prend en charge le contrôle d’accès HTTP (CORS) pour autoriser les applications JavaScript comportant une page unique à utiliser l’API OneDrive via le modèle commun XMLHttpRequest.
Pour en savoir plus sur le CORS (Cross-Origin Resource Sharing) consultez Wikipédia ou le Wiki 3C CORS.
Exemple de code
L’exemple d’application JS OneDrive Explorer illustre l’utilisation de l’API OneDrive à partir d’une application JavaScript. Cet exemple montre comment parcourir et consulter le contenu du lecteur OneDrive d’un utilisateur dans JavaScript.
Vous pouvez essayer l’exemple d’application OneDrive Explorer ou afficher le code source.
Exemple de requête
L’exemple suivant crée une requête CORS qui renvoie les éléments du lecteur OneDrive d’un utilisateur, en envoyant une requête GET au point de terminaison /drive/root/children. L’exemple a été généré à l’aide de test-cors.org.
var createCORSRequest = function(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Most browsers.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// IE8 & IE9
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// CORS not supported.
xhr = null;
}
return xhr;
};
var url = 'https://graph.microsoft.com/v1.0/me/drive/root/children';
var method = 'GET';
var xhr = createCORSRequest(method, url);
xhr.onload = function() {
// Success code goes here.
};
xhr.onerror = function() {
// Error code goes here.
};
xhr.setRequestHeader('Authorization', 'Bearer access_token_value');
xhr.send();
Téléchargement de fichiers OneDrive dans les applications JavaScript
Pour télécharger des fichiers de OneDrive dans une application JavaScript, vous ne pouvez pas utiliser l’API /content, dans la mesure où elle répond avec une redirection 302. Il est strictement interdit d’effectuer une redirection 302 lorsqu’un contrôle en amont CORS est requis, par exemple lorsque l’en-tête Autorization est fourni.
Au lieu de cela, votre application doit sélectionner la propriété @microsoft.graph.downloadUrl, qui renvoie l’URL vers laquelle /content vous aurait redirigé. Cette URL peut ensuite être demandée directement à l’aide de XMLHttpRequest. Étant donné que ces URL sont préalablement authentifiées, elles peuvent être récupérées sans demande de contrôle en amont CORS.
Exemple
Pour récupérer l’URL de téléchargement d’un fichier, émettez tout d’abord une requête qui inclut la propriété @microsoft.graph.downloadUrl :
GET /drive/items/{item-id}?select=id,@microsoft.graph.downloadUrl
Cet exemple renvoie l’ID et l’URL de téléchargement d’un fichier :
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "12319191!11919",
"@microsoft.graph.downloadUrl": "https://..."
}
Vous pouvez ensuite émettre une requête XMLHttpRequest pour obtenir l’URL fournie dans @microsoft.graph.downloadUrl pour extraire le fichier.