public async Task <ActionResult <string> > loginFacebookUser(FacebookLoginDTO model) { try { Gebruiker user = _gebruikerRepository.GetBy(model.Email); if (user != null) { try { Debug.WriteLine(user); //await _signInManager.SignInAsync(user, true); string token = GetToken(user); return(Created("", token)); //returns only the token } catch (Exception e) { return(BadRequest(e.Message)); } } else { Gebruiker g = new Gebruiker { Email = model.Email, Voornaam = model.Voornaam, Achternaam = model.Achternaam, //Foto = model.Foto, Type = Enum.GebruikerType.Leiding, UserName = model.Email, //TelNr = model.TelNr IsFacebookUser = true }; var result = await _userManager.CreateAsync(g); if (result.Succeeded) { _gebruikerRepository.SaveChanges(); string token = GetToken(g); return(Created("", token)); } return(BadRequest()); } } catch (Exception e) { return(BadRequest(e.Message)); } }
private FacebookLoginDTO FillFaceBookDto(dynamic payload) { FacebookLoginDTO data = new FacebookLoginDTO(); data.FacebookId = payload.id; if (IsPropertyExist(payload, "email")) { data.Email = payload.email; } if (IsPropertyExist(payload, "name")) { data.Username = payload.name; } return(data); }
public FacebookLoginDTO ValidateAndGet(string facebookToken) { string fbAppSecret = ConfigurationManager.AppSettings["FbAppSecret"]; string prof = ComputeHmacSha256Hash(facebookToken, fbAppSecret); string url = "https://graph.facebook.com/v2.5/me?fields=id,email,name&access_token=" + facebookToken + "&appsecret_proof=" + prof; using (var client = new HttpClient()) { var res = client.GetAsync(url).Result; if (res.IsSuccessStatusCode) { var json = res.Content.ReadAsStringAsync().Result; dynamic payload = JObject.Parse(json); FacebookLoginDTO data = FillFaceBookDto(payload); return(data); } } return(null); }
public UserFacebook LoginFacebook(FacebookLoginDTO model) { var existingUser = _oAuthRepository.Get(model.FacebookId); if (existingUser != null) { if (IsBlocked(existingUser.UserId)) { throw new UserBlockedException(); } return(existingUser); } else { var guid = Guid.NewGuid().ToString(); return(_oAuthRepository.Add(new UserFacebook() { FacebookId = model.FacebookId, Username = model.Username, UserId = guid })); } }
public IHttpActionResult LoginFacebook([FromBody] string facebookToken) { if (facebookToken == null) { return(BadRequest("Token is missing")); } try { FacebookLoginDTO model = _facebookValidator.ValidateAndGet(facebookToken); if (model == null) { return(BadRequest("invalid token")); } UserFacebook facebookUser = _authManager.LoginFacebook(model); var token = _token.GenerateKey(facebookUser.UserId, model.Username, facebookUser.IsAdmin, facebookToken); if (_authManager.IsNewFacebookUser(model.FacebookId)) { _authManager.AddUserToIdentity(facebookUser.UserId, model.Username, model.Email, token); _authManager.AddUserToSocial(facebookUser.UserId, model.Username, token); } HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.Add("x-auth-token", token); return(ResponseMessage(response)); } catch (UserBlockedException ube) { return(BadRequest(ube.Message)); } catch (Exception e) { _log.Error(e); return(InternalServerError()); } }