public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = _oAuthProvider.VerifyOAuthAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return(RedirectToAction("ExternalLoginFailure")); } if (_oAuthProvider.OAuthLogin(result.Provider, result.ProviderUserId, persistCookie: false)) { return(RedirectToLocal(returnUrl)); } if (User.Identity.IsAuthenticated) { // If the current user is logged in add the new account _oAuthProvider.CreateOAuthAccount(result.Provider, result.ProviderUserId, new User() { Username = User.Identity.Name }); return(RedirectToLocal(returnUrl)); } else { // User is new, ask for their desired membership name string loginData = _encoder.SerializeOAuthProviderUserId(result.Provider, result.ProviderUserId); ViewBag.ProviderDisplayName = _oAuthProvider.GetOAuthClientData(result.Provider).DisplayName; ViewBag.ReturnUrl = returnUrl; return(View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData })); } }