具有所需范围时无法读取完整的用户配置文件 MS Graph
Cannot read full user profiles MS Graph while having the needed scopes
我在我的代码中使用 GraphServiceClient 来访问多个数据端点。我有一个使用 Azure AD 登录的服务帐户,具有以下范围:Group.Read.All
、User.Read.All
、Mail.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
作为应用程序权限(意味着没有登录用户到您的应用程序,使用客户端凭据流程),那么您可以读取您组织中的所有邮箱。
我在我的代码中使用 GraphServiceClient 来访问多个数据端点。我有一个使用 Azure AD 登录的服务帐户,具有以下范围:Group.Read.All
、User.Read.All
、Mail.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
作为应用程序权限(意味着没有登录用户到您的应用程序,使用客户端凭据流程),那么您可以读取您组织中的所有邮箱。