public ActionResult RedirectHandler() { string app_id = Convert.ToString(ConfigurationManager.AppSettings["Client_Id"]); string app_secret = Convert.ToString(ConfigurationManager.AppSettings["FacebookAppSecret"]); string scope = Convert.ToString(ConfigurationManager.AppSettings["App_Scope"]); string AccessCode = Convert.ToString(Request["code"]); string access_token = string.Empty; string RedirectUrl = Convert.ToString(ConfigurationManager.AppSettings["RedirectUrlFB"]); if (!string.IsNullOrEmpty(AccessCode)) { string url = string.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}", app_id, RedirectUrl, scope, AccessCode, app_secret); HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(response.GetResponseStream()); string jsonResponse = reader.ReadToEnd(); JavaScriptSerializer sr = new JavaScriptSerializer(); string jsondata = jsonResponse; dynamic DynamicData = JObject.Parse(jsondata); access_token = DynamicData.access_token; } FacebookUserDetails user = GetDetails(access_token); ActionOutput <apiUserDetailShort> result = _userManager.FaceBookAuthentication(user); if (result.Status == ActionStatus.Successfull && result.Message != "Already Registered.") { var auth = _userManager.LoginWithFaceBook(user); CreateCustomAuthorisationCookie(auth.Email, false, new JavaScriptSerializer().Serialize(new UserDetails(auth))); return(RedirectToActionPermanent("MyProfile", "Home", new { area = "user" })); } else { if (result.Message == "Already Registered.") { var existUserDetails = _userManager.GetUserDetailsByUserId(result.Object.UserId).Object; CreateCustomAuthorisationCookie(existUserDetails.Email, false, new JavaScriptSerializer().Serialize(new UserDetails(existUserDetails))); if (existUserDetails.Address == null && (existUserDetails.CountryID == null || string.IsNullOrEmpty(existUserDetails.CountryID))) { return(RedirectToActionPermanent("MyProfile", "Home", new { area = "user" })); } return(RedirectToActionPermanent("Dashboard", "Home", new { area = "user" })); } } } return(RedirectToAction("Index", "Home")); }
private FacebookUserDetails GetDetails(string AccessToken) { FacebookUserDetails details = new FacebookUserDetails(); Uri eatTargetUri = new Uri("https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=" + ConfigurationManager.AppSettings["Client_Id"] + "&client_secret=" + ConfigurationManager.AppSettings["FacebookAppSecret"] + "&fb_exchange_token=" + AccessToken); HttpWebRequest eat = (HttpWebRequest)HttpWebRequest.Create(eatTargetUri); StreamReader eatStr = new StreamReader(eat.GetResponse().GetResponseStream()); string eatToken = eatStr.ReadToEnd().ToString().Replace("access_token=", ""); // Split the access token and expiration from the single string string[] eatWords = eatToken.Split('&'); string extendedAccessToken = eatWords[0]; // Request the Facebook user information Uri targetUserUri = new Uri("https://graph.facebook.com/me?fields=first_name,last_name,gender,email,birthday,relationship_status,locale,link&access_token=" + AccessToken); HttpWebRequest user = (HttpWebRequest)HttpWebRequest.Create(targetUserUri); // Read the returned JSON object response StreamReader userInfo = new StreamReader(user.GetResponse().GetResponseStream()); string jsonResponse = string.Empty; jsonResponse = userInfo.ReadToEnd(); // Deserialize and convert the JSON object to the Facebook.User object type JavaScriptSerializer sr = new JavaScriptSerializer(); string jsondata = jsonResponse; dynamic stuff = JObject.Parse(jsondata); details.Name = stuff.first_name + " " + stuff.last_name; details.Gender = stuff.gender; details.ID = stuff.id; details.BirthDay = stuff.birthday; details.Email = stuff.email; details.Location = stuff.location; /*You can get other dynamic variables*/ return(details); }