1
votes

I am trying to get and analyze data from office 365 resource room booking data, for that I am using graph API to find meeting times, https://graph.microsoft.com/v1.0/me/findMeetingTimes , this query perfectly working on Microsoft graph explorer after given permissions to calendar.ReadWrite and calendar.ReadWrite.Shared, but this is not working through api call in SharePoint page and postman test with same permissions given in azure WEB API. it is returning below error
{ "error": { "code": "ErrorAccessDenied", "message": "Access is denied. Check credentials and try again.", "innerError": { "request-id": "90f335e7-1955-48c2-a9e9-300ea232e181", "date": "2018-10-26T07:47:13" } } }
If any suggestion appreciated.

2
According to the findMeetingTimes Rest API, it just supports delegated permission not support the application permission. If you could add the demo code about how to get the access token and call the rest API will be more helpful.Tom Sun - MSFT

2 Answers

0
votes

I'm assuming you are using the MSGraphClient inside of SPFx, it is using the delegated permissions (not app permissions as per the comment in this thread). Can you confirm you are using this? https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-msgraph

This api (https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_findmeetingtimes) requires "Calendars.Read.Shared, Calendars.ReadWrite.Shared" as you stated.

You would need to add additional permissions for this api call to work. As you only get User.Read.All for SPFx with MSGraphClient. This is documented here https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient

From your provided request Id, I can see that your request had these scopes, which is missing the Calendars.Read.Shared permissions scope.

"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","Reports.Read.All"

0
votes

Look into the permissions of findMeetingTimes. You mode of authentication could be the root cause. For me I was tryint to use Application mode and this is not supported in this API.

I used and alternative api, /calendar/getSchedule to achieve this. If you login as your userid use ME option or use application mode login to login and use {id|userPrincipalName} to get calendar details for any meeting room.

Refer: https://docs.microsoft.com/en-us/graph/api/calendar-getschedule?view=graph-rest-1.0&tabs=http

Graph API Explorer link below provides the basics on how to login and got good examples for Graph to begin with.

https://developer.microsoft.com/en-us/graph/graph-explorer