Зайдя в систему и авторизовавшись как глобальный администратор в подписке O365 Enterprise, я могу отправлять запросы всем пользователям с помощью Microsoft Graph. Я также могу запросить отдельных пользователей с помощью User.Id
.
Но когда я пытаюсь запросить файлы OneDrive (DriveItem
) для любого пользователя, я получаю пустой ответ, и ресурс не найден. Та же ошибка, когда я использую UserPrincipalName
вместо Id
.
образец запроса:
/v1.0/users/427d0a15-69db-4ab1-b7ae-542776ef53ed/drive/items
Каков шаблон вызова для глобального администратора для запроса дисков / элементов дисков всех пользователей в арендаторе?
Я уже дал согласие администратора приложению на следующие разрешения:
public static string[] Scopes = {
"Files.ReadWrite.All",
"Sites.Read.All",
"Sites.ReadWrite.All",
"Sites.FullControl.All",
"User.ReadWrite.All",
"Directory.ReadWrite.All",
"Directory.AccessAsUser.All"
};
Я использую делегированные разрешения и запрашиваю разрешения во время выполнения через код, используя класс PublicClientApplication
, если это имеет значение.
Обновление:
Я получаю ту же ошибку «Ресурс не найден» при вызове:
/v1.0/users/427d0a15-69db-4ab1-b7ae-542776ef53ed/drive/root/children
Исходный код:
IGraphServiceUsersCollectionPage usersCollection =
await graphClient.Users.Request().GetAsync();
foreach (User user in usersCollection)
{
IDriveItemChildrenCollectionPage childrenCollection =
await graphClient.Users[user.Id].Drive.Root.Children.Request().GetAsync();
}
Когда цикл Foreach повторяется в первый раз, первый пользователь регистрируется в Global Admin, и вызов Drive.Root.Children
работает правильно, но при последующих итерациях для других пользователей выдается исключение с сообщением об ошибке:
{"Код: itemNotFound \ r \ nСообщение: ресурс не найден. \ R \ n \ r \ nВнутренняя ошибка \ r \ n"}