C# 与Microsoft.Azure.ActiveDirectory.GraphClient相比,调用Microsoft.Graph时没有足够的用户数据内容
我想在同一注册的应用程序上将代码从Microsoft.Azure.ActiveDirectory.GraphClient更改为Microsoft.Graph。在某些数据结构(例如,集团、公司)上,获取的数据是相同的。但是,用户获取的数据是不同的。(我正在使用Graph API的V1.0。) 例如,当我试图通过其upn获取某个用户时。 旧方法是调用:C# 与Microsoft.Azure.ActiveDirectory.GraphClient相比,调用Microsoft.Graph时没有足够的用户数据内容,c#,azure,azure-active-directory,microsoft-graph-api,C#,Azure,Azure Active Directory,Microsoft Graph Api,我想在同一注册的应用程序上将代码从Microsoft.Azure.ActiveDirectory.GraphClient更改为Microsoft.Graph。在某些数据结构(例如,集团、公司)上,获取的数据是相同的。但是,用户获取的数据是不同的。(我正在使用Graph API的V1.0。) 例如,当我试图通过其upn获取某个用户时。 旧方法是调用: graphClient.Users.Where(user=>user.UserPrincipalName.Equals(upn)).ExecuteS
graphClient.Users.Where(user=>user.UserPrincipalName.Equals(upn)).ExecuteSingleAsync()
//graphClient是ActiveDirectoryClient的实例
新的方法是:
graphClient.Users.Request().Filter(“userPrincipalName eq'+upn+”).GetAsync()
//graphClient是GraphServiceClient的一个实例
尽管它们都将获取具有正确输入UPN信息的同一用户。但与旧方法相比,新方法获取的数据不足,很多属性为空。例如AccountEnabled、OtherMail、AssignedPlans和UserType
我是否以错误的方式调用GraphServiceClient,使其无法获取所有数据?或者我应该通过补充调用获取这些空属性吗
谢谢
我是否以错误的方式调用GraphServiceClient,使其无法获取所有数据
这是Microsoft Graph user API的正常行为,请参阅Microsoft Graph user API和以下摘录:
默认情况下,只返回一组有限的属性(BusinessPhone、displayName、givenName、id、jobTitle、mail、mobilePhone、officeLocation、preferredLanguage、姓氏、userPrincipalName
)。此示例演示了默认的请求和响应
或者我应该通过补充调用获取这些空属性吗 我们可以使用$select参数来查询属性。下面是您可以参考的演示代码。您可以选择所需的属性。它对我有用
var user = graphserviceClient.Users.Request().Select(x =>new
{
x.UserPrincipalName,
x.DisplayName,
x.AccountEnabled,
x.UsageLocation
} ).Filter("userPrincipalName eq '" + upn + "'")
.GetAsync().Result;
测试结果:
非常感谢您的帮助!