Microsoft Graph Api: недостаточно прав для завершения операции - PullRequest
0 голосов
/ 29 мая 2018

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

Вот что я сделал до сих пор:

  1. Создал и зарегистрировал приложение через https://apps.dev.microsoft.com
  2. Генерировал секретный включенный неявный поток
  3. Предоставил ему следующий список разрешений Microsoft Graph:

    Делегированный : Files.ReadWrite.All, offline_access, Group.ReadWrite.All, Directory.ReadWriteAll, User.ReadWriteAll

    Применение : Directory.ReadWrite.All, Files.ReadWrite.All, Group.ReadWrite.All, User.ReadWrite.All

  4. Использовал поток code с областью действия offline_access и Files.ReadWrite.All, получил код и затем токен.

  5. Использование этого токена для загрузкифайл через /me диск работает хорошо (/v1.0/me/drive/items/itemid/content), но когда я пытаюсь загрузить или просто запросить других пользователей, я получаю сообщение об ошибке с недостаточными привилегиями.

Вызов https://graph.microsoft.com/v1.0/users получает ответ:

{
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "request-id": "cee06586-12af-4768-9135-b9709d7ecb5d",
      "date": "2018-05-29T14:45:48"
    }
  }
}

То же самое происходит, когда я добавляю идентификатор пользователя.Когда я прошу получить устройство пользователя, я получаю ответ «не найден».

Я видел ответы на аналогичные вопросы, в которых говорилось, что я должен добавить разрешения для своего приложения в Azure Active Directory через портал Azure, но мое приложение указано только в разделе «Корпоративное приложение», и я не вижув разделе «Регистрация приложений», где я могу добавить разрешения, в разделе «Приложения предприятия» я не могу добавить какие-либо разрешения, только поиск.

Примечание. Мой идентификатор пользователя - глобальный администратор на портале Azure.,Этот пользователь также является пользователем, который создал и владеет приложением.

Есть идеи, чего мне здесь не хватает?

Спасибо

Редактировать :

Мне удалось добиться определенного прогресса, я пытался создать приложение через портал Azure, а не через портал приложений.Теперь он отображается на странице регистрации приложения, поэтому я смог добавить к нему разрешения.

Так что теперь я могу просматривать всех пользователей, но все же, когда я пытаюсь просмотреть их диск, я получаю "«not found» ответ:

Вызов https://graph.microsoft.com/v1.0/users/userid/drive возвращает ответ:

{
  "error": {
    "code": "itemNotFound",
    "message": "The resource could not be found.",
    "innerError": {
      "request-id": "ec6ed197-15ea-498a-80d0-e2a9f832a0b9",
      "date": "2018-05-29T15:49:18"
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

ОК. Мне удалось решить эту проблему, спросив токен без пользователя: https://developer.microsoft.com/en-us/graph/docs/concepts/auth_v2_service. Он обладает всеми необходимыми привилегиями, и я могу загрузить любой файл, который мне нужен.Спасибо Марку и Юунасу за помощь в этом.

0 голосов
/ 29 мая 2018

Для вызова /users требуется, чтобы у вас было как минимум разрешение User.ReadBasic.All или User.Read.All.Поскольку вы запрашивали только Files.ReadWrite.All, у вас недостаточно прав доступа к профилям других пользователей.

Попробуйте использовать область действия:

User.Read.All+Files.ReadWrite.All+offline_access
...