Доступ к общим элементам 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-адрес для общего доступа, используйте следующую логику:
- Для начала примените к URL-адресу кодировку base64.
- Преобразуйте результат из кодировки base64 в недополненный формат base64url, удалив символы
=
в конце значения и заменив/
символом_
, а+
— символом-
.) - Добавьте
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 общих ресурсов всегда требует аутентификации. С его помощью невозможно обращаться к содержимому, доступ к которому предоставлен анонимно, без контекста пользователя.