public async Task <AppUser> Authenticate(UserTokenIdModel token) { //NB: These config files are loaded from the user secrets. var appToken = await GenerateAppAccessToken(_configuration["Facebook:AppId"], _configuration["Facebook:AppSecret"]); var isValid = await DebugUserAccessToken(appToken, token.TokenId); if (isValid) { var user = await CreateOrGetUser(token); return(user); } throw new Exception("Invalid Token"); }
public async Task <IActionResult> Google([FromBody] UserTokenIdModel token) { try { var user = await _googleAuthService.Authenticate(token); await _signInManager.SignInAsync(user, true); var jwtToken = GenerateJwtToken(user.Email, user); return(Ok(jwtToken)); } catch (Exception e) { Debug.WriteLine(e.Message); return(BadRequest(e.Message)); } }
private async Task <AppUser> CreateOrGetUser(UserTokenIdModel userToken) { var user = await _userManager.FindByEmailAsync(userToken.Email); if (user == null) { var appUser = new AppUser { FirstName = userToken.Name, SecondName = userToken.FamilyName, Email = userToken.Email, PictureURL = userToken.Picture, OAuthIssuer = "facebook", UserName = userToken.FamilyName + "_" + userToken.GivenName }; var identityUser = await _userManager.CreateAsync(appUser); return(appUser); } return(user); }
private async Task <AppUser> CreateOrGetUser(Payload payload, UserTokenIdModel userToken) { var user = await _userManager.FindByEmailAsync(payload.Email); if (user == null) { var appUser = new AppUser { FirstName = userToken.Name, SecondName = userToken.FamilyName, Email = userToken.Email, PictureURL = userToken.Picture, OAuthIssuer = payload.Issuer, OAuthSubject = payload.Subject, UserName = userToken.Name.Replace(" ", "_") }; var identityUser = await _userManager.CreateAsync(appUser); return(appUser); } return(user); }
public async Task <AppUser> Authenticate(UserTokenIdModel userTokenModel) { var payload = await GoogleJsonWebSignature.ValidateAsync(userTokenModel.TokenId, new GoogleJsonWebSignature.ValidationSettings()); return(await CreateOrGetUser(payload, userTokenModel)); }