public async Task <HttpResponseMessage> GetFacebookLogin(string accessToken) { FacebookUserViewModel fbUser = null; var path = "https://graph.facebook.com/me?access_token=" + accessToken; var client = new HttpClient(); var uri = new Uri(path); var response = await client.GetAsync(uri); if (!response.IsSuccessStatusCode) { return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } var content = await response.Content.ReadAsStringAsync(); fbUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserViewModel>(content); var fbUserId = long.Parse(fbUser.ID); var user = DataContext.User.FirstOrDefault(x => x.FacebookId == fbUserId); if (user == null) { var papUser = new User { Username = String.Format("{0} {1}", fbUser.FirstName, fbUser.LastName), Email = String.IsNullOrEmpty(fbUser.Email) ? null : fbUser.Email, FacebookId = long.Parse(fbUser.ID), IsOnline = true }; DataContext.User.Add(papUser); DataContext.Commit(); var accountModel = new AccountModel { UserId = papUser.Id, Username = papUser.Username, OpenGames = new OpenGamesModel() }; return(Request.CreateResponse(HttpStatusCode.Created, accountModel)); } else { var guesses = DataContext.Guess.Where(x => x.NextUser.Id == user.Id && !x.Complete); var openGameModel = PopulateOpenGamesModel(guesses); var accountModel = new AccountModel { UserId = user.Id, Username = user.Username, OpenGames = openGameModel }; return(Request.CreateResponse(HttpStatusCode.OK, accountModel)); } }
private async Task <FacebookUserViewModel> VerifyFacebookAccessToken(string accessToken) { FacebookUserViewModel fbUser = null; var path = "https://graph.facebook.com/me?fields=id,name,email&access_token=" + accessToken; var client = new HttpClient(); var uri = new Uri(path); var response = await client.GetAsync(uri); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); fbUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserViewModel>(content); } return(fbUser); }
/// <summary> /// /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public async Task <FacebookUserViewModel> VerifyFacebookAccessToken(string accessToken) { var fbUser = new FacebookUserViewModel(); var path = $"https://graph.facebook.com/v2.12/me?access_token={accessToken}&fields=id,email,first_name,last_name"; var client = new HttpClient(); var uri = new HttpRequestMessage(); uri.RequestUri = new Uri(path); var response = await client.SendAsync(uri); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); fbUser = JsonConvert.DeserializeObject <FacebookUserViewModel>(content); } return(fbUser); }
public async Task <IHttpActionResult> CreateFacebookUser(FacebookUserViewModel model) { if (!ModelState.IsValid) { return(BadRequest()); } var user = new User { Email = model.Email, FacebookId = model.FacebookId, Name = model.Name, PictureUrl = model.PictureUrl, Phone = model.Phone }; user = await _userService.UpdateOrCreateAsync(user); return(Ok(user)); }