public async Task <IActionResult> LoginCallback(string returnUrl) { string authenticationName = string.Empty; var urlPath = _httpContextAccessor.HttpContext.Request.Path; if (urlPath.HasValue) { var socialMediaList = new SocialMediaList(); authenticationName = socialMediaList.SocialMedias.Where(x => "/" + x.CallBackPath.ToLower() == urlPath.Value).Select(x => x.Name).FirstOrDefault(); } //authenticate social user var authenticateResult = await this.HttpContext.AuthenticateAsync(authenticationName); if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any()) { return(RedirectToRoute("Login")); } string email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value; if (string.IsNullOrEmpty(email)) { email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value + "@" + authenticateResult.Principal.Identity.AuthenticationType + ".com"; } //create external authentication parameters var authenticationParameters = new ExternalAuthenticationParameters { ProviderSystemName = AuthenticationDefaults.PluginSystemName, AccessToken = await this.HttpContext.GetTokenAsync(authenticationName, "access_token"), Email = email, IsApproved = RefactorMe_IsGoogleEmailDomainWhitelisted(authenticationName, email), ExternalIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value, ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value, Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList() }; //authenticate Nop user return(await _externalAuthenticationService.AuthenticateAsync(authenticationParameters, returnUrl)); }
/// <returns>A task that represents the asynchronous operation</returns> public async Task <IActionResult> LoginCallback(string returnUrl) { //authenticate Facebook user var authenticateResult = await HttpContext.AuthenticateAsync(FacebookDefaults.AuthenticationScheme); if (!authenticateResult.Succeeded || !authenticateResult.Principal.Claims.Any()) { return(RedirectToRoute("Login")); } //create external authentication parameters var authenticationParameters = new ExternalAuthenticationParameters { ProviderSystemName = FacebookAuthenticationDefaults.SystemName, AccessToken = await HttpContext.GetTokenAsync(FacebookDefaults.AuthenticationScheme, "access_token"), Email = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Email)?.Value, ExternalIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.NameIdentifier)?.Value, ExternalDisplayIdentifier = authenticateResult.Principal.FindFirst(claim => claim.Type == ClaimTypes.Name)?.Value, Claims = authenticateResult.Principal.Claims.Select(claim => new ExternalAuthenticationClaim(claim.Type, claim.Value)).ToList() }; //authenticate Nop user return(await _externalAuthenticationService.AuthenticateAsync(authenticationParameters, returnUrl)); }