Не удалось получить findMeetingTimes с помощью Microsoft Graph API
Я пытаюсь получить и проанализировать данные из данных о бронировании комнаты ресурсов Office 365, для этого я использую API-интерфейс Graph для определения времени встреч, https://graph.microsoft.com/v1.0/me/findMeetingTimes, этот запрос отлично работает. в обозревателе графиков Microsoft после предоставления разрешений на calendar.ReadWrite и calendar.ReadWrite.Shared, но это не работает с помощью API-вызова на странице SharePoint и теста почтальона с теми же разрешениями, что и в веб-API Azure. это возвращается ниже ошибки
{"error": {"code": "ErrorAccessDenied", "message": "Доступ запрещен. Проверьте учетные данные и повторите попытку.",
"innerError": {
"request-id": "90f335e7-1955-48c2-a9e9-300ea232e181",
"date": "2018-10-26T07:47:13"
}
}
}
Если любое предложение приветствуется.
1 ответ
Посмотрите разрешения findMeetingTimes. Основной причиной может быть ваш режим аутентификации. Для меня я пытался использовать режим приложения, и это не поддерживается в этом API.
Для этого я использовал альтернативный api, /calendar/getSchedule. Если вы входите в систему в качестве своего идентификатора пользователя, используйте параметр ME или вход в режим приложения для входа в систему и используйте {id|userPrincipalName} для получения сведений о календаре для любой комнаты собрания.
Обратитесь: https://docs.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0&tabs=http
Ссылка на Graph API Explorer ниже предоставляет основы того, как войти в систему, и дает хорошие примеры для Graph для начала.
Я предполагаю, что вы используете MSGraphClient внутри SPFx, он использует делегированные разрешения (не разрешения приложения, как указано в комментарии в этой теме). Вы можете подтвердить, что используете это? https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-msgraph
Для этого API ( https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_findmeetingtimes) требуется "Calendars.Read.Shared, Calendars.ReadWrite.Shared", как вы заявили,
Вам нужно будет добавить дополнительные разрешения для этого вызова API для работы. Поскольку вы получаете только User.Read.All для SPFx с MSGraphClient. Это задокументировано здесь https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient
По указанному вами идентификатору запроса я вижу, что ваш запрос имел эти области, в которых отсутствует область разрешений Calendars.Read.Shared.
"Mail.ReadWrite", "User.ReadWrite.All", "Calendars.Read", "People.Read.All", "Group.Read.All", "Directory.ReadWrite.All", "MailboxSettings.Read", "Contacts.ReadWrite", "Group.ReadWrite.All", "Sites.Manage.All", "User.Invite.All", "Files.ReadWrite.All", "Directory.Read.All", "User.Read.Все","Files.Read.All","Mail.Read","Calendars.ReadWrite","Mail.Send","MailboxSettings.ReadWrite","Contacts.Read","Sites.FullControl.All","Reports.Read.All"