Я пытаюсь получить и проанализировать данные из данных бронирования ресурсов офиса 365, для этого я использую API-интерфейс графа, чтобы найти время встреч, https://graph.microsoft.com/v1.0/me/findMeetingTimes, этот запрос отлично работает в графическом обозревателе Microsoft после предоставления разрешений для calendar.ReadWrite и calendar.ReadWrite. Общий доступ, но это не работает через вызов API на странице SharePoint и тест почтальона с теми же разрешениями, которые указаны в веб-API Azure. он возвращает ошибку под ошибкой
{"error": {"code": "ErrorAccessDenied", "message": "Доступ запрещен. Проверьте учетные данные и повторите попытку.", "innerError": {"request-id" : "90f335e7-1955-48c2-a9e9-300ea232e181", "date": "2018-10-26T07: 47: 13"}}}
Если любое предложение будет оценено.
Не удалось получить findMeetingTimes с помощью Microsoft Graph API
Ответы (2)
Я предполагаю, что вы используете 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» .All »,« Files.Read.All »,« Mail.Read »,« Calendars.ReadWrite »,« Mail.Send »,« MailboxSettings.ReadWrite »,« Contacts.Read »,« Sites.FullControl.All », "Отчеты.Читать.Все"
Посмотрите разрешения 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 для начала.
https://developer.microsoft.com/en-us/graph/graph-explorer