gpt4 book ai didi

c# - 与 Microsoft.Azure.ActiveDirectory.GraphClient 相比,调用 Microsoft.Graph 时用户没有足够的数据内容

转载 作者:行者123 更新时间:2023-12-03 02:57:20 26 4
gpt4 key购买 nike

我想在同一注册应用程序上将代码从 Microsoft.Azure.ActiveDirectory.GraphClient 更改为 Microsoft.Graph。在某些数据结构上(例如集团、公司),获取的数据是相同的。但User获取的数据不同。 (我使用的是Graph API V1.0。)

例如,当我尝试通过其 upn 获取特定用户时。老方法是调用:

graphClient.Users.Where(user => user.UserPrincipalName.Equals(upn)).ExecuteSingleAsync()
//graphClient是ActiveDirectoryClient的一个实例

新的方法是调用:

graphClient.Users.Request().Filter("userPrincipalName eq '"+ upn + "'").GetAsync()
//graphClient是GraphServiceClient的实例

尽管它们都会使用输入 UPN 的正确信息获取同一用户。但与旧方法相比,新方法获取的数据不够充分,很多属性为空。例如 AccountEnabled、Othermails、AssignedPlans 和 UserType。

我是否以错误的方式调用 GraphServiceClient,导致它无法获取所有数据?或者我应该通过补充调用来获取这些空属性?

谢谢!

最佳答案

Am I calling GraphServiceClient in a wrong way so that it cannot fetch all the data?

这是 Microsoft Graph 用户 API 的正常行为,请参阅 Microsoft Graph 用户 API here和这个摘录:

By default, only a limited set of properties are returned ( businessPhones, displayName, givenName, id, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage, surname, userPrincipalName ). This example illustrates the default request and response.

<小时/>

Or should I fetch these null properties with a supplement call?

我们可以使用 $select 参数来查询属性。以下是演示代码,您可以引用。您可以选择您想要的属性。这个对我有用。

var user = graphserviceClient.Users.Request().Select(x =>new 
{
x.UserPrincipalName,
x.DisplayName,
x.AccountEnabled,
x.UsageLocation

} ).Filter("userPrincipalName eq '" + upn + "'")
.GetAsync().Result;

测试结果:

enter image description here

关于c# - 与 Microsoft.Azure.ActiveDirectory.GraphClient 相比,调用 Microsoft.Graph 时用户没有足够的数据内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com