protected void Page_Load() { // Process the result from an auth provider in the request ProviderName = IdentityHelpers.GetProviderNameFromRequest(Request); if (String.IsNullOrEmpty(ProviderName)) { RedirectOnFail(); return; } if (!IsPostBack) { var manager = Context.GetOwinContext().GetUserManager <ApplicationUserManager>(); var signInManager = Context.GetOwinContext().Get <ApplicationSignInManager>(); var loginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo(); if (loginInfo == null) { RedirectOnFail(); return; } var user = manager.Find(loginInfo.Login); if (user != null) { signInManager.SignIn(user, isPersistent: false, rememberBrowser: false); IdentityHelpers.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); } else if (User.Identity.IsAuthenticated) { // Apply Xsrf check when linking var verifiedloginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo(IdentityHelpers.XsrfKey, User.Identity.GetUserId()); if (verifiedloginInfo == null) { RedirectOnFail(); return; } var result = manager.AddLogin(User.Identity.GetUserId(), verifiedloginInfo.Login); if (result.Succeeded) { IdentityHelpers.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); } else { AddErrors(result); return; } } else { email.Text = loginInfo.Email; } } }