public ActionResult FacebookCallback(string code)
        {
            var     fb     = new FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id     = ConfigurationManager.AppSettings["FbAppID"],
                client_secret = ConfigurationManager.AppSettings["FbAppSecret"],
                redirect_uri  = RedirectUri.AbsoluteUri,
                code          = code
            });

            var accessToken = result.access_token;

            if (!string.IsNullOrEmpty(accessToken))
            {
                fb.AccessToken = accessToken;
                dynamic me    = fb.Get("me?fields=first_name, middle_name,last_name,id,email");
                string  email = me.email;
                //string username = me.email;
                //string name = me.first_name;
                try
                {
                    db.sp_InsUserFb(email);
                    db.SaveChanges();
                    var user = db.Users.Where(x => x.Email == email).FirstOrDefault();
                    if (user != null)
                    {
                        Session["userID"]   = user.Id;
                        Session["username"] = user.Email;
                        if (user.Avatar == null)
                        {
                            Session["Avatar"] = "#.png";
                        }
                        BuyerAddressClient buyerAddressClient = new BuyerAddressClient();
                        var addressList = buyerAddressClient.find(Convert.ToInt32(Session["userID"]));
                        Session["Address_ID"] = addressList.Where(x => x.default_address == 1).Select(x => x.Address_ID).FirstOrDefault();

                        return(RedirectToAction("Index", "MainPage", new { Area = "Buyer" }));
                    }
                }
                catch
                {
                    Response.Write("<script>alert('Invalid Email or Password')</script>");
                    return(View("Error"));
                }
            }
            else
            {
                Response.Write("<script>alert('Invalid Email or Password')</script>");
                return(View("Error"));
            }

            Response.Write("<script>alert('Invalid Email or Password')</script>");
            return(View("Error"));
        }