Поделиться через


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

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

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

Разрешения

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

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

HTTP-запрос

GET /shares/{shareIdOrEncodedSharingUrl}

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

Имя параметра Значение Описание
sharingTokenOrUrl 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('+','-');

Ответ

При успешном выполнении этот метод возвращает код отклика 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 общих ресурсов всегда требует аутентификации. С его помощью невозможно обращаться к содержимому, доступ к которому предоставлен анонимно, без контекста пользователя.