public async Task <ActionResult> ExternalLoginCallback(string returnUrl) { var loginInfo = await _accountProvider.GetExternalLoginInfoAsync(); if (loginInfo == null) { return(RedirectToAction("Login")); } var firstName = loginInfo .ExternalIdentity .Claims .First(c => c.Type == "urn:facebook:first_name").Value; //var birthday = loginInfo // .ExternalIdentity // .Claims // .First(c => c.Type == "urn:facebook:birthday").Value; // Sign in the user with this external login provider if the user already has a login var result = await _accountProvider.ExternalSignInAsync(loginInfo); switch (result) { case SignInStatus.Success: return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false })); case SignInStatus.Failure: default: // If the user does not have an account, then prompt the user to create an account ViewBag.ReturnUrl = returnUrl; ViewBag.LoginProvider = loginInfo.Login.LoginProvider; return(View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email })); } }