protected virtual async Task <AuthenticateResult> UpdateAccountFromExternalClaimsAsync(TId userId, string provider, string providerId, IEnumerable <Claim> claims) { var existingClaims = await _userStore.GetClaimsAsync(userId); var intersection = existingClaims.Intersect(claims, new ClaimComparer()); var newClaims = claims.Except(intersection, new ClaimComparer()); foreach (var claim in newClaims) { var result = await _userStore.AddClaimAsync(userId, claim); if (!result.Succeeded) { return(new AuthenticateResult(result.Errors.First())); } } return(null); }