具有所需范围时无法读取完整的用户配置文件 MS Graph

Cannot read full user profiles MS Graph while having the needed scopes

我在我的代码中使用 GraphServiceClient 来访问多个数据端点。我有一个使用 Azure AD 登录的服务帐户,具有以下范围:Group.Read.AllUser.Read.AllMail.Read.

但是,对于这些所需的范围,我无法 get the MailFolders 获取用户个人资料或用户的生日。它给出以下错误:

ServiceException: Code: -2147024891, System.UnauthorizedAccessException.

管理员 (https://imgur.com/iFb0rx9) 已授予 Azure AD 中的委派权限。

示例邮件文件夹:

var result = await client
  .Users[user.Id]
  .MailFolders
  .Request()
  .GetAsync();

这是返回的错误:

ServiceException: 
   Code: ErrorAccessDenied
   Message: Access is denied. Check credentials and try again.

我不能访问其他用户的个人资料还是我遗漏了什么?

我相信这里已经回答了这个问题。 即使您的应用已获得管理员同意执行某些操作,如果您明白我的意思,它也不会覆盖 Exchange 委托权限。

您将需要该特定用户的令牌,或尝试以在 Exchange online 中委派的用户身份访问它。

如果您拥有 Mail.Read 作为委派权限(意味着您已使用用户登录),那么您只能阅读自己的邮件,即使有人已授予您权限到他们的邮箱。为了阅读其他邮箱,您需要请求Mail.Read.Shared权限。

如果您拥有 Mail.Read 作为应用程序权限(意味着没有登录用户到您的应用程序,使用客户端凭据流程),那么您可以读取您组织中的所有邮箱。