public HttpResponseMessage Post() //, [FromBody] string changes), string encryptedClientId { String contentString = Request.Content.ReadAsStringAsync().Result.ToString(); ChangesModel req; string leadGenID = ""; string pageID = ""; int lgid = 0; int clientID = -1; string token = ""; var clientIP = GetClientIp(); #region Handle Request try { req = JSON.SafelyParseJson <ChangesModel>(contentString); if (req.entry[0].changes[0].field != "leadgen") { // This is NOT a Leadgen event, log it? Email.SendEmail("*****@*****.**", "POST on FB API - non-leadgen", "body:" + contentString + " ; field=" + req.entry[0].changes[0].field, true, string.Empty, string.Empty); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } leadGenID = req.entry[0].changes[0].value.leadgen_id; pageID = req.entry[0].changes[0].value.page_id; } catch (Exception ex) { // Log it?? Email.SendEmail("*****@*****.**", "POST EXCEPTION on FB API", "body:" + contentString + " ; LeadGenID=" + leadGenID + " ; PageID = " + pageID, true, string.Empty, string.Empty); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } #endregion var fb = new FacebookAPI("Leads"); #region Database calls using (var dc = new IntegrationsDataContext()) { var page = (from p in dc.Integrations_FacebookPages where p.PageID == pageID && p.AccessRevoked == null select p).FirstOrDefault(); if (page != null) { clientID = (int)page.ClientID; } else { Email.SendEmail("*****@*****.**", "Unable to retrieve Facebook Integration for Page=" + pageID, "Invalid Request at " + DateTime.Now, true, string.Empty, string.Empty); return(Request.CreateResponse(HttpStatusCode.BadRequest)); } page.PageAccessToken = fb.UpdateToken(page.PageAccessToken); token = page.PageAccessToken; var newLeadGen = new Integrations_FacebookLeadGen { ClientID = clientID, LeadGen_ID = leadGenID, PageID = pageID, Posted = DateTime.Now, PostJSON = contentString, RequestIP = clientIP }; dc.Integrations_FacebookLeadGens.InsertOnSubmit(newLeadGen); dc.SubmitChanges(); lgid = newLeadGen.ID; } #endregion #region create LoanTek lead var myLead = fb.GetLeadInfo(leadGenID, token); var loanTekLead = myLead.ToMortgageLead(clientID, true); if (loanTekLead != null) { var newFBLead = new Integrations_FacebookLead { LeadGenID = lgid, LeadID = loanTekLead.LeadId, LeadJSON = contentString }; using (var dc = new IntegrationsDataContext()) { dc.Integrations_FacebookLeads.InsertOnSubmit(newFBLead); dc.SubmitChanges(); } Email.SendEmail("*****@*****.**", "FB API Lead Post Success", "Integrations_FacebookLeads.ID=" + newFBLead.ID.ToString() + " tbl_Leads.LeadID=" + loanTekLead.LeadId.ToString() + "LeadGenID=" + leadGenID + " ; PageID = " + pageID + "<br><br>Body:<br>" + contentString, true, string.Empty, string.Empty); } else { Email.SendEmail("*****@*****.**", "FB Leads - LoanTek Lead creation failure", "body:" + contentString + " ; LeadGenID=" + leadGenID + " ; PageID = " + pageID, true, string.Empty, string.Empty); } #endregion return(Request.CreateResponse(HttpStatusCode.OK, contentString)); }
// Obtem as informacoes do Facebook no servidor private IEnumerator getLoginResult(string auth, object state, LoginCallback callback) { // Numero maximo de tentativas int max_attempts = 5; WWW conn = null; WWWForm form = new WWWForm(); form.AddField("device", SystemInfo.deviceUniqueIdentifier.Replace("-", "")); form.AddField("authentication", auth); while (max_attempts > 0) { conn = new WWW(Flow.URL_BASE + "login/facebook/fbinfo.php", form); yield return(conn); if (conn.error != null || conn.text != "") { break; } max_attempts--; yield return(new WaitForSeconds(1)); } if (max_attempts == 0 || conn.error != null) { Debug.LogError("Server error: " + conn.error); yield break; } JSonReader reader = new JSonReader(); IJSonObject data = reader.ReadAsJSonObject(conn.text); if (data == null || data.Contains("error")) { Debug.LogError("Json error: " + conn.text); yield break; } GameToken.save(data); // Verifica se houve erro if (data.Contains("fb_error_reason") && data["fb_error_reason"].ToString() == "user_denied") { // Up Top Fix Me //GameGUI.game_native.showMessage("Error", "You need to authorize our app on Facebook."); // Redireciona para o login caso necessario // Up Top Fix Me //if (Scene.GetCurrent() != GameGUI.components.login_scene) //Scene.Login.Load(Info.firstScene); yield break; } // Salva o token do Facebook Save.Set(PlayerPrefsKeys.FACEBOOK_TOKEN.ToString(), data["fbtoken"].ToString(), true); // Atualiza token da FacebookAPI FacebookAPI facebook = new FacebookAPI(); facebook.UpdateToken(); if (callback != null) { callback(state); } }
public HttpResponseMessage Post(string encryptedClientId) { GetParams(Request); #region Add Page if (GetParam("Action").ToUpper() == "ADD") { using (var dc = new IntegrationsDataContext()) { int appID = (from l in dc.Integrations_FacebookApps where l.Application == "Leads" select l).FirstOrDefault().ID; int clientID = int.Parse(Encryption.DecryptString(encryptedClientId)); if (!(clientID > 0)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid ClientID")); } var findPage = (from p in dc.Integrations_FacebookPages where p.ClientID == clientID && p.PageID == GetParam("PageID") && p.AccessRevoked == null select p).FirstOrDefault(); if (findPage != null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Already Subscribed")); } var fb = new FacebookAPI("Leads"); var newPage = new Integrations_FacebookPage { ClientID = int.Parse(Encryption.DecryptString(encryptedClientId)), AppID = appID, PageAccessToken = fb.UpdateToken(GetParam("Token")), PageName = GetParam("PageName"), PageID = GetParam("PageID"), AccessGranted = DateTime.Now }; dc.Integrations_FacebookPages.InsertOnSubmit(newPage); dc.SubmitChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, "Success")); } #endregion #region Remove Page else if (GetParam("Action").ToUpper() == "REMOVE") { using (var dc = new IntegrationsDataContext()) { int appID = (from l in dc.Integrations_FacebookApps where l.Application == "Leads" select l).FirstOrDefault().ID; int clientID = int.Parse(Encryption.DecryptString(encryptedClientId)); if (!(clientID > 0)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid ClientID")); } var removePage = (from p in dc.Integrations_FacebookPages where p.ClientID == clientID && p.PageID == GetParam("PageID") && p.AccessRevoked == null select p).FirstOrDefault(); if (removePage == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid PageID")); } removePage.AccessRevoked = DateTime.Now; dc.SubmitChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, "Success")); } #endregion return(Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request Type")); }
// Obtem as informacoes do Facebook no servidor private IEnumerator getLoginResult(string auth, object state, LoginCallback callback) { // Numero maximo de tentativas int max_attempts = 5; WWW conn = null; WWWForm form = new WWWForm(); form.AddField("device", SystemInfo.deviceUniqueIdentifier.Replace("-", "")); form.AddField("authentication", auth); while (max_attempts > 0) { conn = new WWW(Flow.URL_BASE + "login/facebook/fbinfo.php", form); yield return conn; if (conn.error != null || conn.text != "") break; max_attempts--; yield return new WaitForSeconds(1); } if (max_attempts == 0 || conn.error != null) { Debug.LogError("Server error: " + conn.error); yield break; } JSonReader reader = new JSonReader(); IJSonObject data = reader.ReadAsJSonObject(conn.text); if (data == null || data.Contains("error")) { Debug.LogError("Json error: " + conn.text); yield break; } GameToken.save(data); // Verifica se houve erro if (data.Contains("fb_error_reason") && data["fb_error_reason"].ToString() == "user_denied") { // Up Top Fix Me //GameGUI.game_native.showMessage("Error", "You need to authorize our app on Facebook."); // Redireciona para o login caso necessario // Up Top Fix Me //if (Scene.GetCurrent() != GameGUI.components.login_scene) //Scene.Login.Load(Info.firstScene); yield break; } // Salva o token do Facebook Save.Set(PlayerPrefsKeys.FACEBOOK_TOKEN.ToString(), data["fbtoken"].ToString(), true); // Atualiza token da FacebookAPI FacebookAPI facebook = new FacebookAPI(); facebook.UpdateToken(); if (callback != null) callback(state); }