Obtener acceso a objetos DriveItem compartidos

Espacio de nombres: microsoft.graph

Acceda a un objeto DriveItem compartido o a una colección de elementos compartidos mediante el uso de un shareId o una dirección URL para compartir.

Para usar una dirección URL para compartir con esta API, la aplicación debe transformar la dirección URL en un token para compartir.

Esta API está disponible en las siguientes implementaciones nacionales de nube.

Servicio global Gobierno de EE. UU. L4 Us Government L5 (DOD) China operada por 21Vianet

Permissions

Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.

Tipo de permiso Permisos con privilegios mínimos Permisos con privilegios más altos
Delegado (cuenta profesional o educativa) Files.ReadWrite Files.ReadWrite.All, Sites.ReadWrite.All
Delegado (cuenta personal de Microsoft) Files.ReadWrite Files.ReadWrite.All
Aplicación Files.ReadWrite.All Sites.ReadWrite.All

Solicitud HTTP

GET /shares/{shareIdOrEncodedSharingUrl}

Parámetros de ruta de acceso

Nombre del parámetro Valor Descripción
shareIdOrEncodedSharingUrl string Obligatorio. Un token para compartir como se devuelve mediante la API o una dirección URL para compartir codificada correctamente.

Codificar direcciones URL para compartir

Para codificar una dirección URL para compartir, use la lógica siguiente:

  1. Primero, use base64 para codificar la dirección URL.
  2. Convierta el resultado codificado en base64 en formato unpadded base64url quitando los caracteres = del final del valor, reemplazando / por _ y + por -).
  3. Anexe u! al principio de la cadena.

Como ejemplo, para codificar una dirección 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('+','-');

Encabezados de solicitud

Nombre Descripción
Authorization {token} de portador. Obligatorio. Obtenga más información sobre la autenticación y la autorización.
Content-Type application/json. Necesario.
Prefer Opcional. Cadena. Establezca en uno de los prefer valores que se documentan a continuación.

Preferir valores de encabezado

Nombre Descripción
redeemSharingLink Si shareIdOrEncodedSharingUrl es un vínculo de uso compartido, conceda al autor de la llamada acceso duradero al elemento.
redeemSharingLinkIfNecessary Igual que redeemSharingLink, pero solo se garantiza que el acceso se conceda mientras dure esta solicitud.

redeemSharingLink debe considerarse equivalente al llamador que navega al vínculo de uso compartido del explorador (aceptando el gesto de uso compartido), mientras que redeemSharingLinkIfNecessary está pensado para escenarios en los que la intención es simplemente ver los metadatos del vínculo.

Respuesta

Si se ejecuta correctamente, este método devuelve un código de respuesta 200 OK y un recurso sharedDriveItem en el cuerpo de la respuesta.

Ejemplo

Solicitud

En el ejemplo siguiente se muestra una solicitud para recuperar un elemento compartido:

GET /shares/{shareIdOrEncodedSharingUrl}

Respuesta

En el ejemplo siguiente se muestra la respuesta.

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"
    }
  }
}

Acceder directamente al elemento compartido

Aunque SharedDriveItem contiene información útil, la mayoría de las aplicaciones quieren acceder directamente al objeto DriveItem compartido. El recurso SharedDriveItem incluye una raíz y relaciones de elementos que pueden acceder al contenido dentro del ámbito del elemento compartido.

Ejemplo (archivo único)

Solicitud

Al solicitar la relación driveItem, se devolverá el objeto DriveItem compartido.

GET /shares/{shareIdOrUrl}/driveItem

Respuesta

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
}

Ejemplo (carpeta compartida)

Solicitud

Al solicitar la relación driveItem y expandir la colección children, se devolverá el objeto DriveItem compartido junto con los archivos de la carpeta compartida.

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

Respuesta

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
    }
  ]
}

Respuestas de error

Lea el artículo Respuestas a errores para obtener más información sobre cómo se devuelven los errores.

Comentarios

  • Para OneDrive para la Empresa y SharePoint, la API de recursos compartidos siempre requiere autenticación y no se puede usar para acceder a contenido compartido de forma anónima sin un contexto de usuario.