我们想使用 Microsoft Graph SDK 从 Azure Active Directory 检索用户信息。
给定一个有效的电子邮件地址,但我收到一个错误
资源“[email protected]”不存在或其查询的引用属性对象之一不存在。
代码如下。你能指导一下吗?
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["[email protected]"].Request().GetAsync();
我可以重现你的问题。该账户[email protected]
是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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句