public JsonResult LoginByFacebook(string fbAccessToken) { var customerApi = new CustomerApi(); //Get Facebook client profile by accessToken var fb = new FacebookClient(); fb.AccessToken = fbAccessToken; dynamic me = fb.Get("me?fields=id,name,gender,email,birthday"); string fbEmail = me.email; string fbName = me.name; bool? fbGender = null; if (me.gender == "male") { fbGender = true; } else if (me.gender == "female") { fbGender = false; } DateTime fbBirthday = new DateTime(); if (me.birthday != null) { fbBirthday = DateTime.ParseExact(me.birthday, "MM/dd/yyyy", CultureInfo.InvariantCulture); } //Check Cusomter Facebook email exitested var customer = customerApi.Get().Where(q => q.fbEmail != null && q.fbEmail.Equals(fbEmail)).FirstOrDefault(); if (customer != null) { //Check customer membershipcard customerApi.Edit(customer.ID, customer); var newToken = GenerateToken(customer.ID.ToString()); return(Json(new { status = new { success = true, message = ConstantManager.MES_LOGIN_SUCCESS, status = ConstantManager.STATUS_SUCCESS }, data = new { data = new { accessToken = newToken, isfirstLogin = false, isPhoneNoLogin = false, CustomerInfo = customer } }, }, JsonRequestBehavior.AllowGet)); } else { //Create customer by facebook profile data CustomerViewModel newCustomer = new CustomerViewModel(); newCustomer.Name = fbName; newCustomer.Birthday = fbBirthday; newCustomer.Gender = fbGender; newCustomer.fbEmail = fbEmail; int resId = -1; resId = customerApi.AddCustomer(newCustomer); if (resId != -1) { var createdCustomer = customerApi.Get().Where(q => q.ID == resId).FirstOrDefault(); var newToken = GenerateToken(createdCustomer.ID.ToString()); return(Json(new { status = new { success = true, message = ConstantManager.MES_LOGIN_SUCCESS, status = ConstantManager.STATUS_SUCCESS }, data = new { data = new { accessToken = newToken, isfirstLogin = true, isPhoneNoLogin = false, CustomerInfo = createdCustomer } }, }, JsonRequestBehavior.AllowGet)); } } return(Json(new { status = new { success = false, message = ConstantManager.MES_LOGIN_FAIL, status = ConstantManager.STATUS_SUCCESS }, data = new { } }, JsonRequestBehavior.AllowGet)); }