public IHttpActionResult ExternalLoginCallback() { GoogleOAuth2Client.RewriteRequest(); IHttpActionResult actionResult; AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Settings.Url + "api/account/ExternalLoginCallback"); if (!result.IsSuccessful) { actionResult = Redirect(Settings.Url + "api/Account/ExternalLoginFailure"); } else if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) { actionResult = Redirect(Settings.Url + "api/Account/ExternalLoginFinal?provider=" + result.Provider + "&providerUserId=" + result.ProviderUserId); } else { string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); var model = new AccountModels.RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData }; switch (result.Provider) { case "facebook": case "google": { model.Email = result.UserName; model.UserName = result.UserName; break; } case "twitter": { model.Email = result.UserName; model.UserName = result.UserName; break; } default: { model.Email = result.UserName; model.UserName = result.UserName; break; } } actionResult = Redirect(Settings.Url + "api/Account/ExternalLoginConfirmation?username="******"&email=" + model.Email + "&externallogindata=" + model.ExternalLoginData + "&provider=" + result.Provider + "&providerUserId=" + result.ProviderUserId); } return(actionResult); }
public IHttpActionResult ExternalLoginConfirmation(string username, string externalLoginData, string email, string provider, string providerUserId) { AccountModels.RegisterExternalLoginModel model = new AccountModels.RegisterExternalLoginModel() { UserName = username, ExternalLoginData = externalLoginData, Email = email }; _accountRepository.CreateUser(model, provider, providerUserId); return(Redirect(Settings.Url + "api/Account/ExternalLoginFinal?provider=" + provider + "&providerUserId=" + providerUserId)); }
public bool CreateUser(AccountModels.RegisterExternalLoginModel model, string provider, string providerUserId) { AccountModels.UserProfile user = _db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); if (user == null) { user = new AccountModels.UserProfile { UserName = model.UserName }; _db.UserProfiles.Add(user); _db.SaveChanges(); OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName); return(true); } return(false); }