Microsoft graph api 使用“MS Graph API”访问所有日历;授权“U代码”;授予

Microsoft graph api 使用“MS Graph API”访问所有日历;授权“U代码”;授予,microsoft-graph-api,azure-ad-graph-api,Microsoft Graph Api,Azure Ad Graph Api,我们有一个Microsoft Graph API的实现,它使用授权码授权。我们需要它能够访问租户的所有日历,因此我们在范围中添加了calendars.ReadWrite(calendars.ReadWrite.all不存在)。到目前为止,只能使用它访问一个用户的日历(无论使用哪个帐户授予对应用程序的访问权)。这与明确的all权限相反,或者至少与我解释它的方式相反,这是因为文档不像其他权限那样说“登录用户” 似乎Calendars.ReadWrite甚至不授予对共享日历的访问权限(即使在OAuth

我们有一个Microsoft Graph API的实现,它使用授权码授权。我们需要它能够访问租户的所有日历,因此我们在范围中添加了
calendars.ReadWrite
calendars.ReadWrite.all
不存在)。到目前为止,只能使用它访问一个用户的日历(无论使用哪个帐户授予对应用程序的访问权)。这与明确的
all
权限相反,或者至少与我解释它的方式相反,这是因为文档不像其他权限那样说“登录用户”

似乎
Calendars.ReadWrite
甚至不授予对共享日历的访问权限(即使在OAuth期间使用租户管理)。虽然有一个单独的作用域,但我希望这会排除该作用域,就像
User.ReadWrite
排除
User.Read
一样。另外,我不想要求用户共享他们的日历。它应该会起作用


我见过它使用“客户机凭据”授权,但应用程序也需要“授权代码”授权,因为显然订阅功能与其他流一起使用。我想避免需要两个不同的流,这真的很愚蠢。这可能吗?

MS Graph API所能做的应该与我们通过web UI或Outlook所能做的一致

如果日历未与您共享,则除非您的帐户具有访问权限,否则您将无法查看该日历,例如,该日历是您所属组的日历

因此,通过使用“授权代码”授权,您必须与当前登录的帐户共享此日历。您需要向AAD应用程序添加
日历.ReadWrite.Shared
委派权限

您可以找到委托权限和应用程序权限之间的差异


@Shiva共享的已列出有关如何获取共享或委派Outlook日历及其事件的完整步骤。

请检查此项,然后再试一次。是的,客户端凭据流(应用程序权限)将获取所有日历,但如果使用委派权限,请确保共享日历。请阅读此感谢您的回答,但您错过了我问题的关键一点:我们需要它来访问租户的所有日历(不仅仅是共享日历)。基本上,您的回答只描述了我已经知道的内容。@a您需要将所有邮箱的完全访问邮箱委派给委派帐户(用于登录)在Exchange管理中心:@aross请查看以下答案:。我可以这样做一次吗?还是必须为随后添加的每个用户设置委派?