Не удалось получить findMeetingTimes с помощью Microsoft Graph API

Я пытаюсь получить и проанализировать данные из данных бронирования ресурсов офиса 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"}}}
Если любое предложение будет оценено.


person Arun Saladi    schedule 26.10.2018    source источник
comment
Согласно findMeetingTimes Rest API, он просто поддерживает делегированное разрешение, а не разрешение приложения. Если бы вы могли добавить демонстрационный код о том, как получить токен доступа и вызвать остальной API, было бы более полезно.   -  person Tom Sun - MSFT    schedule 29.10.2018


Ответы (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 », "Отчеты.Читать.Все"

person Jeremy Thake MSFT    schedule 05.11.2018

Посмотрите разрешения 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

person digitally_inspired    schedule 05.08.2020