Доступ к общим элементам DriveItem

Пространство имен: microsoft.graph

Вы можете получить доступ к общим элементам DriveItem или коллекции общих элементов, используя параметр shareId или URL-адрес для совместного доступа.

Чтобы использовать URL-адрес для совместного доступа с этим API, вашему приложению необходимо преобразовать URL-адрес в токен общего доступа.

Этот API доступен в следующих национальных облачных развертываниях.

Глобальная служба Правительство США L4 Правительство США L5 (DOD) Китай управляется 21Vianet

Разрешения

Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.

Тип разрешения Разрешения с наименьшими привилегиями Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись) Files.ReadWrite Files.ReadWrite.All, Sites.ReadWrite.All
Делегированные (личная учетная запись Майкрософт) Files.ReadWrite Files.ReadWrite.All
Приложение Files.ReadWrite.All Sites.ReadWrite.All

HTTP-запрос

GET /shares/{shareIdOrEncodedSharingUrl}

Параметры пути

Имя параметра Значение Описание
shareIdOrEncodedSharingUrl string Обязательно. Маркер общего доступа, возвращенный API, или правильно закодированный URL-адрес для общего доступа.

Кодирование URL-адресов для общего доступа

Чтобы закодировать URL-адрес для общего доступа, используйте следующую логику:

  1. Для начала примените к URL-адресу кодировку base64.
  2. Преобразуйте результат из кодировки base64 в недополненный формат base64url, удалив символы = в конце значения и заменив / символом _, а + — символом -.)
  3. Добавьте u! в начало строки.

Пример кодирования URL-адреса на языке 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('+','-');

Заголовки запросов

Имя Описание
Авторизация Bearer {token}. Обязательно. Дополнительные сведения о проверке подлинности и авторизации.
Content-Type application/json. Обязательный параметр.
Prefer Необязательный параметр. Строка. Задайте одно из описанных prefer ниже значений.

Предпочитать значения заголовка

Имя Описание
redeemSharingLink Если shareIdOrEncodedSharingUrl является ссылкой для общего доступа, предоставьте вызывающему объекту устойчивый доступ к элементу.
redeemSharingLinkIfNecessary То же самое, что и redeemSharingLink, но доступ гарантируется только на время выполнения этого запроса.

redeemSharingLink следует рассматривать как эквивалентный вызывающей ссылке, перейдя по ссылке общего доступа в браузере (принимая жест общего доступа), в то время как функция redeemSharingLinkIfNecessary предназначена для сценариев, в которых намерение заключается в том, чтобы просто просмотреть метаданные ссылки.

Ответ

При успешном выполнении этот метод возвращает код отклика 200 OK и ресурс sharedDriveItem в тексте отклика.

Пример

Запрос

В следующем примере показан запрос на получение общего элемента:

GET /shares/{shareIdOrEncodedSharingUrl}

Отклик

Ниже показан пример отклика.

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

Прямой доступ к общему элементу

Хотя SharedDriveItem содержит некоторые полезные сведения, большинство приложений хотят получить прямой доступ к общему объекту DriveItem. Ресурс SharedDriveItem включает связи корневых элементов и элементов, которые могут получать доступ к содержимому в область общего элемента.

Пример (один файл)

Запрос

При запросе связи driveItem будет возвращен элемент DriveItem, к которому предоставлен общий доступ.

GET /shares/{shareIdOrUrl}/driveItem

Отклик

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
}

Пример (общая папка)

Запрос

При запросе связи driveItem и расширении коллекции children будет возвращен элемент DriveItem, к которому предоставлен общий доступ, а также файлы, содержащиеся в общей папке.

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

Отклик

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

Ответы с ошибками

Дополнительные сведения о том, как возвращаются ошибки, см. в статье Ответы на ошибки.

Замечания

  • Для OneDrive для бизнеса и SharePoint API общих папок всегда требует проверки подлинности и не может использоваться для анонимного доступа к содержимому без контекста пользователя.