Accès aux objets DriveItem partagés

Accédez à un élément DriveItem partagé ou à une collection d’éléments partagés à l’aide d’un élément shareId ou d’une URL de partage.

Pour utiliser une URL de partage avec cette API, votre application doit transformer l’URL en un jeton de partage.

Autorisations

L’une des autorisations suivantes est requise pour appeler cette API. Pour plus d’informations, notamment sur la façon de choisir les autorisations, voir Autorisations.

Type d’autorisation Autorisations (de celle qui offre le plus de privilèges à celle qui en offre le moins)
Déléguée (compte professionnel ou scolaire) Files.ReadWrite, Files.ReadWrite.All, Sites.ReadWrite.All
Déléguée (compte Microsoft personnel) Files.ReadWrite, Files.ReadWrite.All
Application Files.ReadWrite.All, Sites.ReadWrite.All

Requête HTTP

GET /shares/{shareIdOrEncodedSharingUrl}

Paramètres du chemin d’accès

Nom de paramètre Valeur Description
sharingTokenOrUrl string Obligatoire. Un jeton de partage renvoyé par l’API ou une URL de partage correctement codée.

Codage des URL de partage

Pour coder une URL de partage, suivez la logique suivante :

  1. Tout d’abord, utilisez base 64 pour encoder l’URL.
  2. Convertissez le résultat encodé en base 64 au format base64url non complété : supprimez les caractères = de la fin de la valeur, remplacez / par _ et + par -.
  3. Ajoutez u! au début de la chaîne.

Par exemple, pour coder une URL en C# :

string sharingUrl = "https://onedrive.live.com/redir?resid=1231244193912!12&authKey=1201919!12921!1";
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');

Réponse

Si elle réussit, cette méthode renvoie un code de réponse 200 OK et une ressource sharedDriveItem mise à jour dans le corps de la réponse.

Exemple

Demande

Voici un exemple de demande pour récupérer un élément partagé :

GET /shares/{shareIdOrEncodedSharingUrl}

Réponse

Voici un exemple de réponse.

HTTP/1.1 200 OK
Content-type: application/json

{
  "id": "B64397C8-07AE-43E4-920E-32BFB4331A5B",
  "name": "contoso project.docx",
  "owner": {
    "user": {
      "id": "98E88F1C-F8DC-47CC-A406-C090248B30E5",
      "displayName": "Ryan Gregg"
    }
  }
}

Accéder directement à l’élément partagé

La ressource SharedDriveItem contient des informations utiles mais la plupart des applications souhaiteront accéder directement à l’élément DriveItem partagé. La ressource SharedDriveItem comprend des relations root et items qui peuvent accéder au contenu dans l’étendue de l’élément partagé.

Exemple (fichier unique)

Demande

Si vous demandez la relation driveItem, la ressource DriveItem partagée sera renvoyée.

GET /shares/{shareIdOrUrl}/driveItem

Réponse

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
  "name": "contoso project.docx",
  "eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
  "file": {},
  "size": 109112
}

Exemple (dossier partagé)

Demande

Si vous demandez la relation driveItem et que vous développez la collection children, la ressource DriveItem partagée sera renvoyée avec les fichiers dans le dossier partagé.

GET /shares/{shareIdOrUrl}/driveItem?$expand=children

Réponse

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
  "name": "Contoso Project",
  "eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
  "folder": {},
  "size": 10911212,
  "children": [
    {
      "id": "AFBBDD79-868E-452D-AD4D-24697D4A4044",
      "name": "Propsoal.docx",
      "file": {},
      "size": 19001
    },
    {
      "id": "A91FE90A-2F2C-4EE6-B412-C4FFBA3F71A6",
      "name": "Update to Proposal.docx",
      "file": {},
      "size": 91001
    }
  ]
}

Réponses d’erreur

Pour plus d’informations sur la façon dont les erreurs sont renvoyées, voir Réponses d’erreur.

Remarques

  • Pour Onedrive Entreprise et SharePoint, l’API Shares exige toujours une authentification et ne peut pas être utilisé pour les accès anonymes au contenu partagé sans contexte utilisateur.