[我正在尝试使用C# .NET SDK和this answer中描述的筛选器通过Azure AD B2C租户上的登录电子邮件查找用户,如下所示:
private async Task<User> GetB2CUserByEmail(string email)
{
IGraphServiceUsersCollectionPage collectionPage = await this.GraphServiceClient.Users
.Request()
.Filter($"signInNames/any(c:c/value eq '{email}')")
.Select(this.UserSelectValue)
.GetAsync();
if (collectionPage == null || collectionPage.Count == 0)
{
return null;
}
return collectionPage[0];
}
我遇到错误:
Microsoft.Graph.ServiceException : Code: BadRequest
Message: Filter not supported.
this.UserSelectValue
是"id,givenName..."
之类的属性选择列表。我已经确认这不是问题所在,因为我们有一种类似的工作方法,可以通过扩展属性来查找用户。唯一的区别是.Filter()
参数。
我该如何进行这项工作?谢谢。
signInNames
中没有user resource type属性。这就是您收到此错误的原因。