C# 根据identity server 4.1.0中的提供程序和提供程序Id查找用户
我正在尝试注册Facebook和Google的登录用户,我使用的是最新的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
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标识的示例: