如何使用 Microsoft Graph sdk 通过电子邮件地址从 Active Directory 获取用户信息
How to get user's information from Active Directory by email address using Microsoft Graph sdk
我们想使用 Microsoft Graph SDK 从 Azure Active directory 中检索用户信息。
给了一个有效的电子邮件地址,但我收到了一个错误
Resource 'myemailaddress@live.com' does not exist or one of its queried reference-property objects are not present.
代码如下。可以指导一下吗?
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId).WithTenantId(tenantID).WithClientSecret(clientSecret).Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var user = await graphClient.Users["myemailaddress@live.com"].Request().GetAsync();
我可以重现你的问题。帐户 myemailaddress@live.com
是您租户中的一个 Guest
,导航到门户中的 AAD -> 找到该帐户 -> 单击它并获取 Object ID
,然后使用 Object ID
在代码中,它将起作用。
var user = await graphClient.Users["<Object ID>"].Request().GetAsync();
或者您可以使用 filter
获取用户,在您的情况下,来宾用户的 UserPrincipalName
格式将类似于 myemailaddress_live.com#EXT#@tenantname.onmicrosoft.com
,当使用过滤器时,我们需要 URL 对其进行编码,然后它将成为 myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com
,尝试下面的代码,它在我这边有效。
var user = await graphClient.Users.Request().Filter("UserPrincipalName eq 'myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com'").GetAsync();
更新:
如果你想通过UserPrincipalName
获取用户,你也可以使用url编码如下。
var user = await graphClient.Users["myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com"].Request().GetAsync();
我们想使用 Microsoft Graph SDK 从 Azure Active directory 中检索用户信息。
给了一个有效的电子邮件地址,但我收到了一个错误
Resource 'myemailaddress@live.com' does not exist or one of its queried reference-property objects are not present.
代码如下。可以指导一下吗?
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId).WithTenantId(tenantID).WithClientSecret(clientSecret).Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var user = await graphClient.Users["myemailaddress@live.com"].Request().GetAsync();
我可以重现你的问题。帐户 myemailaddress@live.com
是您租户中的一个 Guest
,导航到门户中的 AAD -> 找到该帐户 -> 单击它并获取 Object ID
,然后使用 Object ID
在代码中,它将起作用。
var user = await graphClient.Users["<Object ID>"].Request().GetAsync();
或者您可以使用 filter
获取用户,在您的情况下,来宾用户的 UserPrincipalName
格式将类似于 myemailaddress_live.com#EXT#@tenantname.onmicrosoft.com
,当使用过滤器时,我们需要 URL 对其进行编码,然后它将成为 myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com
,尝试下面的代码,它在我这边有效。
var user = await graphClient.Users.Request().Filter("UserPrincipalName eq 'myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com'").GetAsync();
更新:
如果你想通过UserPrincipalName
获取用户,你也可以使用url编码如下。
var user = await graphClient.Users["myemailaddress_live.com%23EXT%23%40tenantname.onmicrosoft.com"].Request().GetAsync();