Azure ad b2c Azure B2C检查用户是否存在?

Azure ad b2c Azure B2C检查用户是否存在?,azure-ad-b2c,Azure Ad B2c,我正在使用Azure B2C,后面是文章 已成功添加用户。但问题是,当我创建新用户时,如何使用用户名检查用户是否存在?您可以使用符号名称过滤器通过其电子邮件地址或用户名查找用户 有关电子邮件地址: `GET https://graph.windows.net/myorganization/users?$filter=signInNames/any(x:x/value eq 'someone@somewhere.com')&api-version=1.6` 对于用户名: `https:

我正在使用Azure B2C,后面是文章


已成功添加用户。但问题是,当我创建新用户时,如何使用用户名检查用户是否存在?

您可以使用
符号名称过滤器通过其电子邮件地址或用户名查找用户

有关电子邮件地址:

`GET https://graph.windows.net/myorganization/users?$filter=signInNames/any(x:x/value eq 'someone@somewhere.com')&api-version=1.6`
对于用户名:

`https://graph.windows.net/myorganization/users?$filter=signInNames/any(x:x/value eq 'someone')&api-version=1.6`

以编程方式检查电子邮件地址已存在的用户。 下面是一个使用C#和图形客户端库的解决方案

private async Task<User> CheckUserAlreadyExistAsync(string email, CancellationToken ct)
    {
        var filter = $"identities/any(c:c/issuerAssignedId eq '{email}' and c/issuer eq '{email}')";

        var request = _graphServiceClient.Users.Request()
            .Filter(filter)
            .Select(userSelectQuery)
            .Expand(e => e.AppRoleAssignments);

        var userCollectionPage = await request.GetAsync(ct).ConfigureAwait(false);

        return userCollectionPage.FirstOrDefault();
    }
private async Task CheckUserAlreadyExistAsync(字符串电子邮件,取消令牌ct)
{
var filter=$“标识/any(c:c/issuerasignedid eq'{email}'和c/issuer eq'{email}')”;
var request=\u graphServiceClient.Users.request()
.过滤器(过滤器)
.Select(userSelectQuery)
.扩展(e=>e.批准);
var userCollectionPage=await request.GetAsync(ct).ConfigureAwait(false);
返回userCollectionPage.FirstOrDefault();
}

很确定在这种情况下会出现错误?:)在我看来,最好的方法是处理这个错误,而不是检查然后创建,在代码中引入竞争条件。get error“StatusCode:400,ReasonPhase:‘Bad Request’,“如何获得具有特定用户名的用户?/users/first”。last@company.com:)谢谢,但我尝试了var payload=await client.GetAsync(“/*********.onmicrosoft.com/users?api version=1.6/username.onmicrosoft.com”);出现错误”状态代码:400,原因短语:“请求错误”,“有错误吗?我的意思是
graph.windows.net/***************.onmicrosoft.com/users/username.onmicrosoft.com?api version=1.6
实际上返回成功,但当我尝试使用哪个存在或不存在的用户名时,返回相同的结果。在这两种情况下,Azure AD graph api都返回200 OK。”。如果登录名确实存在,则返回包含匹配用户的非空数组。如果登录名不存在,则返回空数组。我得到“{”odata.error:{”code:“Request_InvalidDataContractVersion”,“message:{”lang:“en”,“value:“指定的api版本无效。该值必须与支持的版本完全匹配。”}}}。。你能帮忙吗@克里斯帕吉特