Как получить доступ администратора к файлам для всех пользователей OneDrive

Я - администратор арендатора для нашего развертывания Office 365. у нас есть внутренняя система, которая должна получить доступ ко всем сайтам OneDrive. Мы используем учетные данные администратора моего арендатора, чтобы получить токен OAuth и пытаться получить файлы со всех сайтов OneDrive с использованием API-интерфейса SharePoint/OneDrive REST с этим токеном OAuth.

С помощью токена OAuth администратора-арендатора мы можем получить файлы, принадлежащие администратору-арендатору или совместно с администратором-арендатором. мы не можем получить файлы из другого пользователя OneDrive.

Аналогичный результат с Microsoft Graph API. мы можем только получить файлы, принадлежащие администратору арендатора или совместно с администратором арендатора. мы не можем получить файлы из другого пользователя OneDrive.

Одним из решений для этого может быть добавление администратора арендатора к администратору семейства сайтов для всех сайтов OneDrive, но для нас это не является возможным вариантом.

Есть ли какой-либо API или какой-либо другой способ получить весь пользовательский файл OneDrive с помощью учетных данных администратора OneDrive или владельца?

Спасибо, Абхи

Ответ 1

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

Если ваше приложение работает с интерактивным пользователем (то есть вы сидите перед ним во время его запуска), то вы хотите использовать делегированные разрешения и Протокол выдачи кода авторизации.

Если ваше приложение запускается как служба (т.е. выполняется в фоновом режиме), тогда вы захотите использовать разрешения приложений и Client Grant Flow.

Независимо от выбранной модели разрешений области действия и конечные точки остаются неизменными.

Для доступа к другим пользовательским файлам внутри арендатора вам понадобится одна из следующих областей разрешений: Files.Read.All, Files.ReadWrite.All, Sites.Read.All, Sites.ReadWrite.All.

Чтобы увидеть другие пользовательские файлы, вам необходимо напрямую обратиться к этому пользовательскому диску. Это делается с помощью пользователя userPrincipalName. Например, чтобы увидеть файлы в корневом каталоге пользовательского диска, вы должны вызвать:

 https://graph.microsoft.com/v1.0/users/{userPrincipalName}/drive/root/children

Надеюсь, это поможет.