Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据identity server 4.1.0中的提供程序和提供程序Id查找用户_C#_Asp.net_Asp.net Core_Asp.net Identity_Identityserver4 - Fatal编程技术网

C# 根据identity server 4.1.0中的提供程序和提供程序Id查找用户

C# 根据identity server 4.1.0中的提供程序和提供程序Id查找用户,c#,asp.net,asp.net-core,asp.net-identity,identityserver4,C#,Asp.net,Asp.net Core,Asp.net Identity,Identityserver4,我正在尝试注册Facebook和Google的登录用户,我使用的是最新的Identity server 4.1.0 正在尝试按提供程序和提供程序Id查找用户 private async Task<(ApplicationUser user, string provider, string providerUserId, IEnumerable<Claim> claims)> FindUserFromExternalProvider(AuthenticateResult r

我正在尝试注册Facebook和Google的登录用户,我使用的是最新的Identity server 4.1.0

正在尝试按提供程序和提供程序Id查找用户

private async Task<(ApplicationUser user, string provider, string providerUserId, IEnumerable<Claim> claims)> FindUserFromExternalProvider(AuthenticateResult result)
    {
        var externalUser = result.Principal;
        var userIdClaim = externalUser.FindFirst(JwtClaimTypes.Subject) ??
                          externalUser.FindFirst(ClaimTypes.NameIdentifier) ??
                          throw new Exception("Unknown userid");

        // remove the user id claim so we don't include it as an extra claim if/when we provision the user
        var claims = externalUser.Claims.ToList();
        claims.Remove(userIdClaim);

        var provider = result.Properties.Items["scheme"];
        var providerUserId = userIdClaim.Value;

        // find external user
        var user = await _userManager.FindByLoginAsync(provider, providerUserId);
        //var user = _users.FindByExternalProvider(provider, providerUserId);

        return (user, provider, providerUserId, claims);
    }
// lookup our user and external provider info
            var (user, provider, providerUserId, claims) = await FindUserFromExternalProvider(result);
            if (user == null)
            {
               // SignUp user
                
            }

您使用的是一个示例UI,作为快速入门的一部分。如果需要在UI中使用自定义userStore,则由您自行调整和实现

以下是用于ASP.NET标识的示例:


是的,我使用的是示例用户界面,遵循的代码与我使用的代码相同,只是想知道如何根据提供商和提供商Id获取外部登录的用户在我的响应示例链接中:在外部登录时,设置新用户时,会添加用户登录名(包含提供商信息)-在搜索用户时,提供者信息用于过滤用户-如果这些信息不起作用,那应该是一个bug。