C# Azure AD B2C.Net SDK-通过电子邮件检索用户

C# Azure AD B2C.Net SDK-通过电子邮件检索用户,c#,.net-core,azure-active-directory,azure-ad-b2c,azure-ad-graph-api,C#,.net Core,Azure Active Directory,Azure Ad B2c,Azure Ad Graph Api,我正在尝试使用中描述的和筛选器,通过在Azure AD B2C租户上的登录电子邮件查找用户,如下所示: private async Task<User> GetB2CUserByEmail(string email) { IGraphServiceUsersCollectionPage collectionPage = await this.GraphServiceClient.Users .Re

我正在尝试使用中描述的和筛选器,通过在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];
        }
其中
this.UserSelectValue
是一个属性选择列表,如
“id,givenName…”
。我已经确认这不是问题所在,因为我们有一个类似的工作方法,通过扩展属性查找用户;唯一的区别是
.Filter()
参数


我怎样才能做到这一点?谢谢。

中没有
signInNames
属性。这就是你得到这个错误的原因

您应该使用
.Filter(“标识/any(c:c/issuerasignedid eq'{email}'和c/issuer eq'{email}')”)


查看官方样本的详细信息。

这就成功了!女士,如果你正在阅读……我至少遇到了这个问题的三种不同变体。在B2CSDK文档中,应该更容易发现当前正确的方法。
 Microsoft.Graph.ServiceException : Code: BadRequest
    Message: Filter not supported.