public async Task <IActionResult> LoginFacebookCallback() { ExternalLoginInfo info = await signInManager.GetExternalLoginInfoAsync(); await signInManager.SignOutAsync(); var signInResult = await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false); if (!signInResult.Succeeded) { var emailClaim = info.Principal.FindFirst(c => c.Type.Contains("emailaddress")); var givenNameClaim = info.Principal.FindFirst(c => c.Type.Contains("givenname")); var surnameClaim = info.Principal.FindFirst(c => c.Type.Contains("surname")); var associateAccountVM = new AssociateAccountViewModel { FirstName = givenNameClaim.Value, LastName = surnameClaim.Value, Email = emailClaim.Value }; return(View("AssociateAccount", associateAccountVM)); } return(RedirectToAction("Index", "Home")); }
public IActionResult AssociateAccount(AssociateAccountViewModel associateAccountVM) { if (ModelState.IsValid) { var properties = signInManager.ConfigureExternalAuthenticationProperties("Facebook", Url.Action("AssociateAccountCallback", "Account")); HttpContext.Session.SetJson("AssociateAccountViewModel", associateAccountVM); return(Challenge(properties, "Facebook")); } return(View("AssociateAccount", associateAccountVM)); }
private async Task <IdentityResult> CreateAssociatedAccount(AssociateAccountViewModel associateAccountViewModel, ExternalLoginInfo info) { AppUser user = new AppUser { UserName = associateAccountViewModel.Email, FirstName = associateAccountViewModel.FirstName, LastName = associateAccountViewModel.LastName, Email = associateAccountViewModel.Email, }; IdentityResult result = await userManager.CreateAsync(user); if (result.Succeeded) { await userManager.AddLoginAsync(user, info); await userManager.AddToRoleAsync(user, "Regular"); } return(result); }