public GoogleEntity(GoogleDataModel model) { Email = model.Email; ClientId = model.ClientId; AccessToken = model.AccessToken; RefreshToken = model.RefreshToken; AuthUrl = AuthConstants.AuthorizeUrl; AccessTokenUrl = AuthConstants.AccessTokenUrl; Scope = AuthConstants.Scope; }
public static async Task <GoogleDataModel> GetUserLoginData(string accessToken) { GoogleDataModel facebookLoginModel = new GoogleDataModel(); var response = await _httpClient.GetAsync($"tokeninfo?id_token={accessToken}"); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsStringAsync(); facebookLoginModel = JsonConvert.DeserializeObject <GoogleDataModel>(result); } return(facebookLoginModel); }
public async Task <IResponse> GoogleSignIn([FromBody] GoogleLoginModel googleLoginModel) { ExternalLoginResponse externalLoginResponse = new ExternalLoginResponse(); externalLoginResponse.IsModelValid = ModelState.IsValid; if (ModelState.IsValid) { GoogleDataModel googleData = await GoogleAPI.GetUserLoginData(googleLoginModel.AccessToken); ExternalLoginInfo info = CustomExternalLoginInfo.FromLoginModel("Google", googleData); var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, true); externalLoginResponse.IsRegistered = result.Succeeded; externalLoginResponse.Result = result; } else { externalLoginResponse.Errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)); } return(externalLoginResponse); }
public async Task <IResponse> GoogleRegister([FromBody] GoogleRegisterModel googleRegisterModel) { ExternalLoginResponse externalLoginResponse = new ExternalLoginResponse(); externalLoginResponse.IsModelValid = ModelState.IsValid; if (ModelState.IsValid) { GoogleDataModel googleData = await GoogleAPI.GetUserLoginData(googleRegisterModel.AccessToken); ExternalLoginInfo info = CustomExternalLoginInfo.FromLoginModel("Google", googleData); Account account = new Account { UserName = googleRegisterModel.Username, Email = googleData.Email }; var result = await _userManager.CreateAsync(account); if (result.Succeeded) { result = await _userManager.AddLoginAsync(account, info); account.SetUpPoints(_context); await _context.SaveChangesAsync(); if (result.Succeeded) { await _signInManager.SignInAsync(account, true); } } externalLoginResponse.CreateResult = result; externalLoginResponse.Errors = result.Errors.Select(x => x.Description); } else { externalLoginResponse.Errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)); } return(externalLoginResponse); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { string Provider = bindingContext.ValueProvider.GetValue("provider").AttemptedValue; AbstractDataModel model; switch (Provider) { case "google": model = new GoogleDataModel(); break; case "yahoo": model = new YahooDataModel(); break; default: model = new RandomDataModel(); break; } return(model); }