【发布时间】:2021-01-21 15:33:40
【问题描述】:
我已关注documentation,通过登录名查找注册用户。
示例显示以下代码以返回登录名j.smith@yahoo.com 的任何用户:
var users = await graphClient.Users
.Request()
.Filter("identities/any(c:c/issuerAssignedId eq 'j.smith@yahoo.com' and c/issuer eq 'contoso.onmicrosoft.com')")
.GetAsync();
现在我正在尝试实现一个搜索,它应该搜索用户而不输入完整的signInName。由于过滤器似乎是 OData,我尝试使用 contains 方法对其进行增强:
var users = await graphClient.Users
.Request()
.Filter($"identities/any(c:contains(c/issuerAssignedId,'j.smith') and c/issuer eq 'contoso.onmicrosoft.com') ")
.Top(5)
.GetAsync();
现在我在运行这个新查询时收到以下错误:
Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: Request_BadRequest
Message: An unknown function with name 'contains' was found. This may also be a key lookup on a navigation property, which is not allowed.
是我在某处打错字还是contains 不允许?我不认为issuerAssignedId 是查找或导航属性。由于我正在使用 Azure AD B2C,$search 函数也无法根据相同的文档页面工作,所以我现在卡住了。
在 Azure AD B2C 中搜索用户的方式是什么?
编辑
我发现另外两篇 StackOverflow 文章讨论了这个问题,但它们已经很老了。在one of them 中,一位微软员工指出可以使用startswith 运算符。
我试过这样实现它,但它也会抛出一个错误。
.Filter($"identities/any(a:startswith(a/issuerAssignedId,'{username}') and a/issuer eq '{issuer}') ")
Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: Request_BadRequest
Message: Unsupported property or property value or combination of property and operation occured
更多来源:
【问题讨论】:
标签: .net azure azure-active-directory microsoft-graph-api microsoft-graph-sdks