Microsoft Graph API - Получение файлов по пути к файлу - 404 Not Found - PullRequest
1 голос
/ 05 марта 2019

Мое приложение использует client_credentials и успешно использует API-интерфейс Graph для большинства вызовов.

Однако я пытался получить изображения из папки sharepoint по пути и имени файла:

https://graph.microsoft.com/v1.0/drive/root:/sites/folder1/folder2/folder3/folder4/photo.jpg

Устанавливаются соответствующие заголовки (авторизация и принятие).

httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + session["access_token"]);
httpClient.DefaultRequestHeaders.Add("accept", "application/json; odata.metadata=minimal");

Запрос возвращает ответ 404. - Не найдено.

Когда я перехожу на наш сайт sharepoint, я могусм. изображение в порядке, поэтому я могу только предположить, что путь к файлу правильный:

https://ourcompany.sharepoint.com/sites/folder1/folder2/folder3/folder4/photo.jpg

Извинения, но я новичок в Graph API и не могу найти ничего, ссылающегося на это в документации:

https://docs.microsoft.com/en-us/graph/api/resources/onedrive?view=graph-rest-1.0

Путь
/ me / диск / root: / путь / к / файлу

Ресурс Доступ к DriveItem попуть относительно корневой папки OneDrive пользователя.

Требуются ли для этого специальные разрешения?Я обнаружил, что на портале Azure могут потребоваться разрешения, но это связано с активным каталогом Azure, и я не уверен, повлияет ли это на API графика, поскольку он работал нормально, считывая диски и элементы дисков в sharepoint (по дискамидентификатор и идентификатор элемента диска, а не путь к файлу).

РЕДАКТИРОВАТЬ: пошел на портал Azure, добавил разрешения API API Graph для приложения:

  • Сайт: ReadAll
  • Каталог: ReadAll
  • Файл: ReadAll

Без изменений.

1 Ответ

2 голосов
/ 05 марта 2019

A site содержит drive, поэтому вы ссылаетесь на вещи в неправильном порядке.Чтобы получить DriveItem с диска сайта, вам нужно:

/sites/{siteId}/drive/root:/folder1/folder2/folder3/folder4/photo.jpg

Если вы хотите , скачайте DriveItem вместо простоДля получения метаданных вам понадобится:

/sites/{siteId}/drive/root:/folder1/folder2/folder3/folder4/photo.jpg:/content
...