Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
    // 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);
        }
    }
Exemplo n.º 3
0
        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"));
        }
Exemplo n.º 4
0
	// 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);
	}