Sample code for create a Facebook offline event from Salesforce Using Http callout
global class FacebookOfflineEventCreation { @future(callout=true) global static void CreateFacebookOfflineEvents(){ String access_token = System.Label.FacebookAccessToken; // we can get accesstoken from Facebook by manual login and extend to 2 months by using Graph API explorer JSONGenerator gen=JSON.createGenerator(true); gen.writeStartArray(); gen.writeStartObject(); gen.writeFieldName('match_keys'); gen.writeStartObject(); gen.writeStringField('lead_id', '00Q9E0000058NHB'); gen.writeStringField('fn',FacebookOfflineEventCreation.getSHA256code('jana')); gen.writeStringField('ln',FacebookOfflineEventCreation.getSHA256code('Muddana')); gen.writeStringField('email',FacebookOfflineEventCreation.getSHA256code('jaan@gm.com')); gen.writeStringField('phone',FacebookOfflineEventCreation.getSHA256code('1-(650)-888-5622')); gen.writeEndObject(); gen.writeStringField('event_name','Lead'); gen.writeNumberField('event_time',system.now().getTime()/1000); gen.writeStringField('order_id','00Q9E0000058NHB'); gen.writeStringField('item_number','Leaf'); gen.writeStringField('currency','ZAR'); gen.writeNumberField('value',15.00); gen.writeEndObject(); gen.writeEndArray(); string finalJsn = gen.getAsString(); system.debug(finalJsn+'sssss'); String urlEncodedData = EncodingUtil.urlEncode(finalJsn, 'UTF-8'); Http h = new Http(); HttpRequest request = new HttpRequest(); //460995844408117 is offline event set id , we need to get it from FB request.setEndpoint('https://graph.facebook.com/v3.1/460995844408117/events?data='+urlEncodedData+'&upload_tag=in-store%20uploads&access_token='+access_token); request.setMethod('POST'); HttpResponse res=new HttpResponse(); res = h.send(request); if (res.getStatusCode() == 200) { system.debug('Lead is send to Facebook'); } system.debug('----------------'+res); system.debug('----------------'+res.getBody()); JSONParser parser = JSON.createParser(res.getBody()); } global static string getSHA256code(string strVal){ Blob hash = Crypto.generateDigest('SHA-256', Blob.valueOf(strVal)); string hashCode = EncodingUtil.convertToHex(hash); return hashCode; } } ------------------Test Class----------------------------------- @isTest global class FacebookOfflineEventCreationTest { static testmethod void CreateofflineEvent(){ Test.startTest(); Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator()); FacebookOfflineEventCreation.CreateFacebookOfflineEvents(); Test.stopTest(); } global class MockHttpResponseGenerator implements HttpCalloutMock { global HttpResponse respond(HTTPRequest req){ HttpResponse res = new HttpResponse(); res.setStatus('OK'); res.setStatusCode(200); res.setBody('test'); return res; } } }
Comments
Post a Comment