public FacebookUser(dynamic me, dynamic friends) { Name = me.name; Id = me.id; ImageUrl = me.picture.data.url; Installed = me.installed ?? false; Friends = new List<FacebookUser>(); var friendlist = friends; foreach (var friend in friendlist) { FacebookUser user = new FacebookUser(friend); if (user.Installed) { Friends.Add(user); } } }
protected override bool AuthorizeCore(HttpContextBase httpContext) { var isAuthorized = base.AuthorizeCore(httpContext); if (!isAuthorized) { return false; } string accessToken = null; FacebookUser me = null; try { // Check session for access token if (httpContext.Session["access_token"] != null){ accessToken = httpContext.Session["access_token"].ToString(); } else { // Check identity for access token //Get the current claims principal var identity = (ClaimsPrincipal)System.Threading.Thread.CurrentPrincipal; var claims = identity.Claims; // Access claims foreach (Claim claim in claims) { if (claim.Type == "FacebookAccessToken") { accessToken = claim.Value; } } } if (accessToken == null) { return false; } // End access token section // Check session for Me if ((FacebookUser)httpContext.Session["me"] != null){ me = (FacebookUser)httpContext.Session["me"]; } else { // Get new Facebook data with access token Facebook.FacebookClient facebook = new Facebook.FacebookClient(accessToken.ToString()); dynamic RawMe = facebook.Get("me?fields=name,picture.type(square)"); dynamic RawFriends = facebook.Get("me/friends?fields=name,picture.type(square),installed"); // Use Raw Data to populate helpful objects me = new FacebookUser(RawMe, RawFriends.data); // Put Me in session httpContext.Session["me"] = me; } // End Me section } catch (Exception e) { return false; } if (me != null) { me = null; return true; } else { return false; } }