我们想使用Microsoft Graph SDK从Azure Active目录中检索用户的信息。
提供了有效的电子邮件地址,但我收到了错误消息
资源“ myemailaddress@live.com”不存在,或其查询的参考属性对象之一不存在。
代码在下面。你能指导吗?
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();
答案 0 :(得分:1)
我可以重现您的问题。帐户myemailaddress@live.com
在您的租户中是Guest
,在门户中导航到AAD->查找该帐户->单击它并获取Object ID
,然后使用{{1} },它将起作用。
Object ID
或者您可以使用var user = await graphClient.Users["<Object ID>"].Request().GetAsync();
获取用户,在这种情况下,来宾用户的filter
格式类似于UserPrincipalName
,在使用过滤器时,我们需要URL对其进行编码,那么它将是myemailaddress_live.com#EXT#@tenantname.onmicrosoft.com
,请尝试以下代码,它对我有效。
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();
吸引用户,也可以使用如下所示的url编码。
UserPrincipalName