//Getting AccessToken,FacebookMessages,FacebookFeeds and UserProfile for  Authenticated user.
        private void GetAccessToken()
        {
            string code = Request.QueryString["code"];
            User user = null;
            if (Session["login"] != null)
            {
                if (Session["login"].ToString() == "facebook")
                {
                    user = new User();

                    user.CreateDate = DateTime.Now;
                    user.ExpiryDate = DateTime.Now.AddMonths(1);
                    user.Id = Guid.NewGuid();
                    user.PaymentStatus = "unpaid";

                }

            }
            else
            {
                /*User class in SocioBoard.Domain to check authenticated user*/
                 user = (User)Session["LoggedUser"];

            }
                /*Replacing Code With AccessToken*/
                // Facebook.dll using for
                FacebookHelper fbhelper = new FacebookHelper();

            FacebookClient fb = new FacebookClient();
                string profileId = string.Empty;
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("client_id", ConfigurationManager.AppSettings["ClientId"]);
                parameters.Add("redirect_uri", ConfigurationManager.AppSettings["RedirectUrl"]);
                parameters.Add("client_secret", ConfigurationManager.AppSettings["ClientSecretKey"]);
                parameters.Add("code", code);

                JsonObject result = (JsonObject)fb.Get("/oauth/access_token", parameters);
                string accessToken = result["access_token"].ToString();
                fb.AccessToken = accessToken;

               dynamic profile = fb.Get("me");
            if (Session["login"] != null)
            {
                    if (Session["login"].ToString() == "facebook")
                    {
                        try
                        {
                            user.EmailId = profile["email"].ToString();
                        }
                        catch (Exception ex)
                        {
                            logger.Error(ex.StackTrace);
                            Console.WriteLine(ex.StackTrace);
                        }
                        try
                        {

                            user.UserName = profile["name"].ToString();
                        }
                        catch (Exception ex)
                        {
                            logger.Error(ex.StackTrace);
                            Console.WriteLine(ex.StackTrace);
                        }
                        try
                        {
                            user.ProfileUrl = "https://www.facebook.com/" + profile["id"] + "/picture?type=small";
                            profileId = profile["id"];
                        }
                        catch (Exception ex)
                        {
                            logger.Error(ex.StackTrace);
                            Console.WriteLine(ex.StackTrace);
                        }
                        user.UserStatus = 1;

                        UserRepository userrepo = new UserRepository();

                        if (userrepo.IsUserExist(user.EmailId))
                        {
                            string emailid = user.EmailId;
                            user = null;

                            user = userrepo.getUserInfoByEmail(emailid);

                        }
                        else
                        {
                            UserRepository.Add(user);
                        }

                        Session["LoggedUser"] = user;
                    }

                }

                var feeds = fb.Get("/me/feed");

                var home = fb.Get("/me/home");
                var messages = fb.Get("/me/inbox");

                    long friendscount = 0;
                try
                {
                    fbhelper.getInboxMessages(messages, profile, user.Id);
                }
                catch (Exception ex)
                {
                    logger.Error(ex.StackTrace);
                    Console.WriteLine(ex.StackTrace);
                }

                try
                {
                    dynamic friedscount = fb.Get("fql", new { q = "SELECT friend_count FROM user WHERE uid=me()" });

                    foreach (var friend in friedscount.data)
                    {
                        friendscount = friend.friend_count;
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex.StackTrace);
                    Console.WriteLine(ex.StackTrace);

                }

                try
                {

                    fbhelper.getFacebookUserProfile(profile, accessToken, friendscount, user.Id);

                }
                catch (Exception exx)
                {
                    logger.Error(exx.StackTrace);
                    Console.WriteLine(exx.StackTrace);

                }

                try
                {

                fbhelper.getFacebookUserFeeds(feeds, profile);

                }
                catch (Exception exxx)
                {
                    logger.Error(exxx.StackTrace);
                    Console.WriteLine(exxx.StackTrace);

                }

                try
                {

                            fbhelper.getFacebookUserHome(home, profile);

                }
                catch (Exception ex)
                {
                    logger.Error(ex.StackTrace);
                    Console.WriteLine(ex.StackTrace);

                }

                try
                {

                    var friendsgenderstats = fb.Get("me/friends?fields=gender");
                    fbhelper.getfbFriendsGenderStats(friendsgenderstats, profile, user.Id);

                }
                catch (Exception ex)
                {
                    logger.Error(ex.StackTrace);
                    Console.WriteLine(ex.StackTrace);
                }
                try
                {
                    FacebookInsightStatsHelper fbiHelper = new FacebookInsightStatsHelper();
                    fbiHelper.getPageImpresion(profile["id"], user.Id, 15);
                    fbiHelper.getFanPageLikesByGenderAge(profile["id"], user.Id, 15);
                    fbiHelper.getLocation(profile["id"], user.Id, 15);
                    //  fbiHelper.getFanPost("459630637383010", user.Id, 10);
                }
                catch (Exception ex)
                {
                    logger.Error(ex.StackTrace);
                }
        }
        //Getting AccessToken,FacebookMessages,FacebookFeeds and UserProfile for  Authenticated user.

        private void GetAccessToken()
        {
            User user = new SocioBoard.Domain.User();
            string code = Request.QueryString["code"];
            if (code == null)
            {
                Response.Redirect("Home.aspx");
            }
            if (Session["login"]!= null)
            {
                if (Session["login"].ToString() == "googleplus")
                {
                    user = (User)Session["LoggedUser"];
                }
                else
                {
                    user = null;
                }
            }
            if (Session["login"] != null)
            {
                if (Session["login"].ToString() == "facebook" )
                {
                    user = new User();

                    user.CreateDate = DateTime.Now;
                    user.ExpiryDate = DateTime.Now.AddDays(30);
                    user.Id = Guid.NewGuid();
                    user.PaymentStatus = "unpaid";
                }
            }
            else
            {
                /*User class in SocioBoard.Domain to check authenticated user*/
                user = (User)Session["LoggedUser"];

            }
            /*Replacing Code With AccessToken*/
            // Facebook.dll using for 
            FacebookHelper fbhelper = new FacebookHelper();


            FacebookClient fb = new FacebookClient();
            string profileId = string.Empty;
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("client_id", ConfigurationManager.AppSettings["ClientId"]);
            parameters.Add("redirect_uri", ConfigurationManager.AppSettings["RedirectUrl"]);
            parameters.Add("client_secret", ConfigurationManager.AppSettings["ClientSecretKey"]);
            parameters.Add("code", code);

            JsonObject result = (JsonObject)fb.Get("/oauth/access_token", parameters);
            string accessToken = result["access_token"].ToString();
            fb.AccessToken = accessToken;

            // This code is used for posting Begin

            ManageReferrals(fb);

            // This code is used for posting End

            // For long Term Fb access_token

            // GET /oauth/access_token?  
            //grant_type=fb_exchange_token&           
            //client_id={app-id}&
            //client_secret={app-secret}&
            //fb_exchange_token={short-lived-token}


            parameters.Clear();

            parameters.Add("grant_type", "fb_exchange_token");
            parameters.Add("client_id", ConfigurationManager.AppSettings["ClientId"]);
            parameters.Add("client_secret", ConfigurationManager.AppSettings["ClientSecretKey"]);
            parameters.Add("fb_exchange_token", accessToken);

            result = (JsonObject)fb.Get("/oauth/access_token", parameters);
            accessToken = result["access_token"].ToString();
            fb.AccessToken = accessToken;

            dynamic profile = fb.Get("me");

            int res = UpdateFbToken(profile["id"], accessToken);
            bool isfbemailexist = false;
            if (Session["login"] != null)
            {
                if (Session["login"].ToString() == "facebook" )
                {
                    try
                    {
                        user.EmailId = profile["email"].ToString();
                    }
                    catch (Exception ex)
                    {
                        isfbemailexist = true;
                        logger.Error(ex.StackTrace);
                        Console.WriteLine(ex.StackTrace);
                    }
                    if (isfbemailexist)
                    {
                        Session["isemailexist"] = "emailnotexist";
                        Response.Redirect("Default.aspx");
                    }
                    try
                    {

                        user.UserName = profile["name"].ToString();
                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex.StackTrace);
                        Console.WriteLine(ex.StackTrace);
                    }
                    try
                    {
                        user.ProfileUrl = "https://graph.facebook.com/" + profile["id"] + "/picture?type=small";
                        profileId = profile["id"];
                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex.StackTrace);
                        Console.WriteLine(ex.StackTrace);
                    }
                    user.UserStatus = 1;

                    UserRepository userrepo = new UserRepository();

                    if (userrepo.IsUserExist(user.EmailId))
                    {
                        string emailid = user.EmailId;
                        user = null;

                        user = userrepo.getUserInfoByEmail(emailid);

                    }
                    else
                    {
                        UserRepository.Add(user);
                    }

                    Session["LoggedUser"] = user;
                }

            }




            var feeds = fb.Get("/me/feed");

            var home = fb.Get("/me/home");
            var messages = fb.Get("/me/inbox");

            long friendscount = 0;
            try
            {
                fbhelper.getInboxMessages(messages, profile, user.Id);
            }
            catch (Exception ex)
            {
                logger.Error(ex.StackTrace);
                Console.WriteLine(ex.StackTrace);
            }

            try
            {
                dynamic friedscount = fb.Get("fql", new { q = "SELECT friend_count FROM user WHERE uid=me()" });

                foreach (var friend in friedscount.data)
                {
                    friendscount = friend.friend_count;
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.StackTrace);
                Console.WriteLine(ex.StackTrace);

            }


            try
            {

                fbhelper.getFacebookUserProfile(profile, accessToken, friendscount, user.Id);

            }
            catch (Exception exx)
            {
                logger.Error(exx.StackTrace);
                Console.WriteLine(exx.StackTrace);

            }

            try
            {

                fbhelper.getFacebookUserFeeds(feeds, profile);

            }
            catch (Exception exxx)
            {
                logger.Error(exxx.StackTrace);
                Console.WriteLine(exxx.StackTrace);

            }

            try
            {

                fbhelper.getFacebookUserHome(home, profile);

            }
            catch (Exception ex)
            {
                logger.Error(ex.StackTrace);
                Console.WriteLine(ex.StackTrace);

            }

            try
            {

                var friendsgenderstats = fb.Get("me/friends?fields=gender");
                fbhelper.getfbFriendsGenderStats(friendsgenderstats, profile, user.Id);

            }
            catch (Exception ex)
            {
                logger.Error(ex.StackTrace);
                Console.WriteLine(ex.StackTrace);
            }
            try
            {
                FacebookInsightStatsHelper fbiHelper = new FacebookInsightStatsHelper();
                fbiHelper.getPageImpresion(profile["id"], user.Id, 15);
                fbiHelper.getFanPageLikesByGenderAge(profile["id"], user.Id, 15);
                fbiHelper.getLocation(profile["id"], user.Id, 15);
                //  fbiHelper.getFanPost("459630637383010", user.Id, 10);
            }
            catch (Exception ex)
            {
                logger.Error(ex.StackTrace);
            }
        }