public ActionResult ExternalLoginCallback(string returnUrl) { var loginInfo = HttpContext.GetOwinContext().Authentication.GetExternalLoginInfo(); if (loginInfo == null) { return(RedirectToAction("Login")); } var email = loginInfo.Email; if (loginInfo.Login.LoginProvider.ToLower() == "twitter") { string accessToken = loginInfo.ExternalIdentity.Claims.Where(x => x.Type == "urn:twitter:access_token").Select(x => x.Value).FirstOrDefault(); string accessSecret = loginInfo.ExternalIdentity.Claims.Where(x => x.Type == "urn:twitter:access_secret").Select(x => x.Value).FirstOrDefault(); var twitterLogin = TwitterHelper.GetTwitterLogin(accessToken, accessSecret, ConfigurationManager.AppSettings["twitter:ConsumerKey"], ConfigurationManager.AppSettings["twitter:ConsumerSecret"]); email = twitterLogin.Email; } var result = _identityExternalAuthService.ExternalSignIn(email, loginInfo.Login.LoginProvider, loginInfo.Login.ProviderKey, isPersistent: true); switch (result) { case CustomerLoginResults.Successful: if (string.IsNullOrEmpty(returnUrl) || !Url.IsLocalUrl(returnUrl)) { return(RedirectToRoute("Home")); } return(Redirect(returnUrl)); case CustomerLoginResults.MemberNotExists: ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginRegistration", new RegisterExternalModel { Email = email, LoginProvider = loginInfo.Login.LoginProvider })); case CustomerLoginResults.IsLockedOut: return(View("AccountLockout")); default: return(RedirectToAction("Login")); } }