public AuthenticateResponse AuthenticateGoogle(AuthenticateRequestGoogle request) { if (request == null) { return(null); } if (request.Token == null) { return(null); } var httpClient = new HttpClient(); var requestUri = new Uri(string.Format(Constants.GoogleApiTokenInfoUrl, request.Token)); GoogleTokenInfo tokenInfo; try { HttpResponseMessage httpResponseMessage = httpClient.GetAsync(requestUri).Result; if (httpResponseMessage.StatusCode != HttpStatusCode.OK) { return(null); } tokenInfo = JsonConvert.DeserializeObject <GoogleTokenInfo>(httpResponseMessage.Content.ReadAsStringAsync().Result); } catch (Exception ex) { return(null); } if (tokenInfo.aud != Constants.GoogleClientId) { return(null); } User user = _context.Users.FirstOrDefault(u => u.Login == tokenInfo.email && u.UserType == UserType.Google); if (user == null) //login not found! Create user { user = new User() { Login = tokenInfo.email, UserType = UserType.Google, Email = tokenInfo.email }; _context.Users.Add(user); _context.SaveChanges(); } string token = generateJwtToken(user); return(new AuthenticateResponse() { Token = token }); }
public IActionResult AuthenticateGoogle(AuthenticateRequestGoogle request) { AuthenticateResponse response = _userService.AuthenticateGoogle(request); if (response == null) { return(BadRequest(new { message = "Bad token!" })); } return(Ok(response)); }