无法使用Microsoft Graph API获取findMeetingTimes

时间:2018-10-26 07:50:54

标签: sharepoint-online azure-ad-graph-api

我正在尝试从Office 365资源室预订数据中获取和分析数据,因为我正在使用图表API查找会议时间,  https://graph.microsoft.com/v1.0/me/findMeetingTimes, 在给定对calendar.ReadWrite和calendar.ReadWrite.Shared的权限后,此查询可以在Microsoft graph Explorer上正常运行,但这无法通过SharePoint页面中的api调用和具有Azure WEB API中赋予的相同权限的邮递员测试来进行。 它返回错误以下
{     “错误”:{         “ code”:“ ErrorAccessDenied”,         “ message”:“访问被拒绝。请检查凭据,然后重试。”,         “ innerError”:{             “ request-id”:“ 90f335e7-1955-48c2-a9e9-300ea232e181”,             “ date”:“ 2018-10-26T07:47:13”         }     } }
如果有任何建议的话。

2 个答案:

答案 0 :(得分:0)

我假设您正在SPFx内部使用MSGraphClient,它正在使用委托权限(而不是根据此线程中的注释的应用程序权限)。您可以确认您正在使用它吗? 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调用正常工作。正如您通过MSGraphClient获得的SPFx的User.Read.All一样。 https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient

从您提供的请求ID中,我可以看到您的请求具有这些范围,但缺少Calendars.Read.Shared权限范围。

“ Mail.ReadWrite”,“ User.ReadWrite.All”,“ Calendars.Read”,“ People.Read.All”,“ Group.Read.All”,“ Directory.ReadWrite.All”,“ MailboxSettings”。读取”,“ 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”。全部”,“ Reports.Read.All”

答案 1 :(得分:0)

查看findMeetingTimes的权限。您的身份验证模式可能是根本原因。对我而言,我尝试使用应用程序模式,但此API不支持此模式。

我使用了替代api / calendar / getSchedule来实现这一点。如果您以用户ID身份登录,请使用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