如何通过Microsoft Graph获取服务主体组成员的ID与DisplayName?
解决方法
Microsoft Graph API默认仅返回资源的核心属性(比如Id),要获取DisplayName这类额外属性,必须显式指定要获取的字段。你只需在请求链中添加Select()方法,指定需要的属性即可,修改后的代码如下:
var graphServiceClient = new Microsoft.Graph.GraphServiceClient(new Microsoft.Graph.DelegateAuthenticationProvider(async (requestMessage) => { var authResult = await _confidentialClientApp.AcquireTokenForClient(new string[] { "https://graph.microsoft.com/.default" }).ExecuteAsync(); requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken); })); // 显式指定要返回的属性 var groupMembership = await graphServiceClient.ServicePrincipals[userData.UniqueId].MemberOf .Request() .Select("id,displayName") .GetAsync();
补充说明
MemberOf返回的结果可能包含组或目录角色,这类资源均支持displayName属性,直接指定即可生效。- 确保你的服务主体已配置并获得足够的应用权限(如
Directory.Read.All或Application.Read.All),且已完成管理员同意授权。
内容的提问来源于stack exchange,提问作者johnstaveley
相关产品推荐
相关产品推荐

