Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Outlook 通过Microsoft Graph API访问共享/房间日历时出错_Outlook_Office365_Microsoft Graph Api_Office365api_Outlook Restapi - Fatal编程技术网

Outlook 通过Microsoft Graph API访问共享/房间日历时出错

Outlook 通过Microsoft Graph API访问共享/房间日历时出错,outlook,office365,microsoft-graph-api,office365api,outlook-restapi,Outlook,Office365,Microsoft Graph Api,Office365api,Outlook Restapi,我正在制作一个需要使用非管理员帐户访问Office 365实例中的共享/房间资源日历的应用程序。我已使用V2端点和身份验证代码授权注册了一个应用程序(在Microsoft应用程序注册门户中)。这允许我成功登录,并为我提供了一个带有Calendars.ReadWrite.Shared作用域的功能令牌。使用此令牌,我可以检索我自己的日历,以及与我显式共享的日历(并因此添加到我的日历列表中)。所有这些都可以通过正常的日历实现。ReadWrite范围 但是,我在请求访问任何其他共享日历(如房间日历)时会

我正在制作一个需要使用非管理员帐户访问Office 365实例中的共享/房间资源日历的应用程序。我已使用V2端点和身份验证代码授权注册了一个应用程序(在Microsoft应用程序注册门户中)。这允许我成功登录,并为我提供了一个带有
Calendars.ReadWrite.Shared
作用域的功能令牌。使用此令牌,我可以检索我自己的日历,以及与我显式共享的日历(并因此添加到我的日历列表中)。所有这些都可以通过正常的
日历实现。ReadWrite
范围

但是,我在请求访问任何其他共享日历(如房间日历)时会出错。这里有一个例子。如果我给
https://graph.microsoft.com/beta/users/my-own-email@business.com/calendars
它成功返回我的日历列表。如果我给
https://graph.microsoft.com/beta/users/meetingroom1.4@business.com/calendars
我收到一个404(未找到)错误。同样的错误也会发生在任何其他用户身上,而不仅仅是会议室。请注意,当我使用相同的帐户登录Office 365 online时,我可以看到这些日历

如果我请求的是事件而不是日历,则会发生另一个错误。如果我给
https://graph.microsoft.com/beta/users/meetingroom1.4@business.com/events
,我得到一个500(内部服务器)错误

我已经检查了我能找到的关于这个问题的所有其他线程,这个来自11月份的线程说在微软端有某种阻塞问题。它使用的是officerestapi,而不是Graph,但是在后端,API调用相同的东西。这个问题还存在吗?或者,我是否缺少一些进一步的权限?我尝试在
日历.ReadWrite.Shared
上添加了很多不同的权限,但没有一个能解决这个问题。有正确的组合吗


非常感谢您的帮助,如果其他信息对诊断有用,请告诉我

因此,如果其他人对此感兴趣,我想出了一种方法,可以访问房间资源日历,而不必使用
calendars.ReadWrite.Shared
权限。这允许您仅使用
日历。ReadWrite
权限访问文件室资源,方法是将它们移动到您正在验证的电子邮件的日历列表中。但是,它只适用于与您共享日历的特定帐户,因此在必须适用于任何帐户的应用程序中不可用。这对于我的用例来说已经足够好了,但是对于你的用例来说可能不行

首先,查找或创建一个帐户,该帐户是您要使用的房间资源日历的代理,并且对该日历具有完全访问权限。在该帐户上,单击配置文件映像下下拉列表中的“打开另一个邮箱”

在下面的弹出窗口中,输入要使用的房间资源日历的电子邮件地址

然后,在打开的新页面上(应为房间资源日历的Office帐户):

  • 导航到日历页面
  • 单击“共享”
  • 与您计划进行身份验证的帐户共享默认日历
然后登录到该“身份验证”帐户,检查其电子邮件中的共享日历通知,然后单击“接受”。这样做的目的是将日历移动到已验证帐户的日历列表中,这意味着您只需调用
https://graph.microsoft.com/v1.0/me/calendars
endpoint。遗憾的是,你必须在你想要访问的每个日历上重复它