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 en la nube nacional.

Servicio global Administración pública de EE. UU. Gobierno de EE. UU. L5 (DOD) China operado por 21Vianet
✅ ✅ ✅ ✅

Permissions

Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use uno o varios permisos con privilegios más altos 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 opcionales

Nombre Tipo Descripción
Prefer string Opcional. Establezca uno de los prefer valores documentados a continuación.

Preferir valores de encabezado

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

redeemSharingLink debe considerarse equivalente a que el autor de la llamada navegue al vínculo para compartir en el explorador (aceptando el gesto de uso compartido), mientras que redeemSharingLinkIfNecessary está pensado para escenarios en los que la intención es simplemente echar un vistazo a 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

Mientras que SharedDriveItem contiene alguna información útil, la mayoría de las aplicaciones querrán 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.