permission: grant

Espacio de nombres: microsoft.graph

Conceda a los usuarios acceso a un vínculo representado por un permiso.

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) No admitida. No admitida.
Aplicación Files.ReadWrite.All Sites.ReadWrite.All

Solicitud HTTP

POST /shares/{encoded-sharing-url}/permission/grant

Parámetros de ruta de acceso

Nombre del parámetro Valor Description
encoded-sharing-url string Obligatorio. Una dirección URL de uso compartido 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.

Cuerpo de la solicitud

En el cuerpo de la solicitud, proporcione un objeto JSON con los siguientes parámetros.

{
  "recipients": [
    { "@odata.type": "microsoft.graph.driveRecipient" }
  ],
  "roles": [ "read | write"]
}
Parámetro Tipo Descripción
destinatarios Collection(driveRecipient) Colección de destinatarios que recibirán acceso.
roles Collection(String) Si el vínculo es un vínculo de "acceso existente", especifica los roles que se concederán a los usuarios. De lo contrario, debe coincidir con el rol del vínculo.

Para obtener una lista de los roles disponibles, vea Roles property values (Valores de propiedad de roles).

Respuesta

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

Siempre se devolverá un permiso que representa el vínculo actualizado en el conjunto de resultados si se realiza correctamente. El vínculo actualizado se puede identificar mediante la presencia de una faceta "link" que contiene la propiedad "scope". En algunos casos, es posible que el vínculo actualizado tenga una dirección URL diferente a la del vínculo original, en cuyo caso se debe usar la nueva dirección URL.

Lea el tema Respuestas de error para obtener más información acerca de la manera en que se muestran los errores.

Ejemplo

En este ejemplo se concede a los usuarios john@contoso.com y ryan@external.com acceso a un vínculo de uso compartido sin modificar otros permisos existentes en el vínculo.

Solicitud

POST https://graph.microsoft.com/v1.0/shares/{encoded-sharing-url}/permission/grant
Content-type: application/json

{
  "recipients": [
    {
      "email": "john@contoso.com"
    },
    {
      "email": "ryan@external.com"
    }
  ],
  "roles": ["read"]
}

Respuesta

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

{
  "value": [
    {
      "hasPassword": false,
      "id": "5fab944a-47ec-48d0-a9b5-5178a926d00f",
      "link": {
        "preventsDownload": false,
        "scope": "users",
        "type": "view",
        "webUrl": "https://contoso.sharepoint.com/:t:/g/design/EZexPoDjW4dMtKFUfAl6BK4BvIUuss52hLYzihBfx-PD6Q"
      },
      "roles": [
        "read"
      ]
    }
  ]
}

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.

Si el vínculo es un vínculo de acceso existente , se devolverán permisos adicionales que representan lo siguiente:

  • Permisos de tipo de usuario que representan a los destinatarios a los que se ha concedido acceso correctamente. Se pueden identificar mediante la presencia de la propiedad grantedTo .
  • Permisos de tipo de vínculo que representan invitaciones que deben enviarse a usuarios externos no reconocidos para que obtengan acceso. Se pueden identificar por la presencia de una faceta de invitación . Estas entradas contendrán un vínculo con la dirección URL de invitación y la colección grantedToIdentities indicará los usuarios a los que se debe enviar el vínculo.
HTTP/1.1 200 OK
Content-type: application/json

{
  "value": [
    {
      "hasPassword": false,
      "id": "00000000-0000-0000-0000-000000000000",
      "link": {
        "preventsDownload": false,
        "scope": "existingAccess",
        "type": "view",
        "webUrl": "https://contoso.sharepoint.com/teams/design/shareddocs/Document.docx"
      },
      "roles": [
        "read"
      ]
    },
    {
      "grantedTo": {
        "user": {
          "displayName": "John Smith",
          "email": "john@contoso.com",
          "id": "47aecee2-d061-4730-8ecb-4c61360441ae"
        }
      },
      "id": "aTowIy5mfG1lbWJlcnNoaXB8bGltaXRlZDJAa2xhbW9kYi5vbm1pY3Jvc29mdC5jb20",
      "roles": [
        "read"
      ]
    },
    {
      "grantedToIdentities": [
        {
          "user": {
            "email": "ryan@external.com"
          }
        }
      ],
      "invitation": {
        "signInRequired": true
      },
      "roles": [
        "read"
      ],
      "link": {
        "type": "view",
        "webUrl": "https://contoso.sharepoint.com/:t:/g/teams/design/EZexPoDjW4dMtKFUfAl6BK4Bw_F7gFH63O310A7lDtK0mQ"
      }
    }
  ]
}

Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.