无Directory.Read.All API权限时获取邀请状态的可行方案
无Directory.Read.All权限时获取Azure AD邀请状态的解决方案
可行方案:
通过用户属性间接判断状态:如果你的应用已有
User.ReadBasic.All或User.Read权限,可查询目标用户的invitationAcceptedDateTime属性——该属性仅在用户接受邀请后会被赋值,若为null则说明邀请未被接受。示例代码:var user = await graphClient.Users[targetUserId].GetAsync(options => { options.QueryParameters.Select = new[] { "id", "invitationAcceptedDateTime" }; }); bool isInvitationAccepted = user.InvitationAcceptedDateTime != null;申请细粒度权限
Invitation.Read.All:这个权限专门用于读取邀请信息,权限范围远小于Directory.Read.All,更容易通过管理员审批。获取该权限后,你原本的Invitations[azureInvitation.Id.ToString()].GetAsync()调用即可正常执行,不会再触发权限异常。本地存储邀请状态:如果邀请是由你的应用创建的,在调用
graphClient.Invitations.PostAsync()创建邀请时,将返回的邀请对象中的Id、Status、InvitedUserEmailAddress等关键信息存入本地数据库。后续查询状态时直接读取本地数据即可,无需调用Graph API。
当前报错说明:
你执行的Invitations.GetAsync()接口必须拥有Directory.Read.All或Invitation.Read.All权限才能访问,缺少权限时会触发你遇到的权限不足异常,上述方案可针对性解决该问题。
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

