public async Task <GoogleAuthenticateResponse> ValidateGoogleToken(GoogleAuthenticateRequest model) { using (var client = new HttpClient()) { var response = await client.GetAsync($"{GOOGLE_TOKEN_API_BASE}{model.GoogleToken}"); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <GoogleAuthenticateResponse>(content)); } } return(null); }
private IActionResult ProcessGoogleRequest(AuthenticateRequest model) { var googleRequest = new GoogleAuthenticateRequest { GoogleToken = model.GoogleToken }; var response = _loginService.AuthenticateWithGoogle(googleRequest); if (response == null) { return(BadRequest(new { message = "Invalid token" })); } return(Ok(response)); }
public AuthenticateResponse AuthenticateWithGoogle(GoogleAuthenticateRequest request) { var result = _googleTokenValidator.ValidateGoogleToken(request)?.Result; if (result == null) { return(null); } var user = _users.FilterBy(x => x.UserName == result.Email).FirstOrDefault(); var userResult = user ?? CreateFromGoogleInfo(result); var token = _jwtTokenGenerator.GenerateJwtToken(userResult); return(new AuthenticateResponse(userResult, token)); }
public async Task <IActionResult> Google([FromBody] GoogleAuthenticateRequest req) { GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(req.TokenId, new GoogleJsonWebSignature.ValidationSettings()); string token = null; string refreshToken = null; Guid userId = await _authenticateService.TryRegisterUserFromGoogle(payload); if (userId != Guid.Empty) { token = await _authenticateService.GenerateTokenAsync(payload.Email); refreshToken = _authenticateService.GenerateRefreshToken(payload.Email); } return(Ok( new { token, refreshToken })); }