我正在尝试从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”
}
}
}
如果有任何建议的话。
答案 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提供了很好的示例。