public async Task <object> Facebook([FromBody] FacebookDto model) { String fbAppId = configuration["Facebook:AppId"]; String fbAppSecret = configuration["Facebook:AppSecret"]; var appAccessTokenResponse = await Client.GetStringAsync($"https://graph.facebook.com/oauth/access_token?client_id={fbAppId}&client_secret={fbAppSecret}&grant_type=client_credentials"); var appAccessToken = JsonConvert.DeserializeObject <FacebookAppAccessToken>(appAccessTokenResponse); var userAccessTokenValidationResponse = await Client.GetStringAsync($"https://graph.facebook.com/debug_token?input_token={model.AccessToken}&access_token={appAccessToken.AccessToken}"); var userAccessTokenValidation = JsonConvert.DeserializeObject <FacebookUserAccessTokenValidation>(userAccessTokenValidationResponse); if (!userAccessTokenValidation.Data.IsValid) { return(BadRequest("Invalid facebook token.")); } var userInfoResponse = await Client.GetStringAsync($"https://graph.facebook.com/v3.1/me?fields=id,email,first_name,last_name,name,gender,locale,birthday,picture&access_token={model.AccessToken}"); var userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse); var user = await userManager.FindByEmailAsync(userInfo.Email); if (user == null) { var newUser = new User { FirstName = userInfo.FirstName, LastName = userInfo.LastName, UserName = userInfo.Email, Email = userInfo.Email, FacebookId = userInfo.Id }; var result = await userManager.CreateAsync(newUser, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8)); if (!result.Succeeded) { return(BadRequest("Failed to register new facebook user.")); } await signInManager.SignInAsync(newUser, false); } var localUser = await userManager.FindByNameAsync(userInfo.Email); if (localUser == null) { return(BadRequest("Failed to create local user account.")); } await signInManager.SignInAsync(user, false); return(GenerateJwtToken(localUser.Email, localUser)); }
public IActionResult FacebookPost([FromBody] FacebookDto facebookdto) { var user = _mapper.Map <UserDetails>(facebookdto); user.Username = facebookdto.Name; user.PhotoUrl = "dummy-dp"; var fbuser = _userService.Create(user); return(Ok(new { Id = fbuser.UserId, Email = fbuser.Email, Username = fbuser.Username, FirstName = fbuser.FirstName, LastName = fbuser.LastName })); }
public async Task <string> ValidateUser([FromBody] FacebookDto facebookDto) { var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); try { AppConfig api = new AppConfig(); var stringTask = await client.PostAsync(api.facebookurl + "api/Facebookapi", new StringContent(JsonConvert.SerializeObject(facebookDto), Encoding.UTF8, "application/json")); var msg = stringTask.Content.ReadAsStringAsync().Result; return(msg); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(null); }