{"id":4807,"date":"2015-09-14T03:05:40","date_gmt":"2015-09-14T03:05:40","guid":{"rendered":"http:\/\/www.jitendrazaa.com\/blog\/?p=4807"},"modified":"2023-05-06T09:36:25","modified_gmt":"2023-05-06T13:36:25","slug":"salesforce-to-salesforce-integration-using-canvas","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-to-salesforce-integration-using-canvas\/","title":{"rendered":"Salesforce to Salesforce integration using Canvas"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-tertiary-background-color has-background\">After writing this article Salesforce has enabled CSP (Content Security Policy) which restricts adding Salesforce in iFrame. We can add MyDomain URL as CSP whitelisting and it works only if user already logged into other Salesforce instance. However, if user is not logged into other instance , internally OAuth navigates through login.salesforce.com which is too restrictive and canvas application fails to load. <\/p>\n<\/blockquote>\n\n\n<p style=\"text-align: justify;\">In this post we will discuss how Canvas can be used to integrate Salesforce with Salesforce. On my\u00a0blog we have seen many articles and possibilities to integrate Salesforce with another Salesforce instance like <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-to-salesforce-integration-using-named-credentials-in-just-5-lines-of-code\/\">this<\/a>\u00a0and <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/getting-record-from-one-salesforce-organization-to-other\/\">this <\/a>post.<\/p>\n<p><strong>Whats is force.com Canvas<\/strong><\/p>\n<p style=\"text-align: justify;\">Force.com Canvas\u00a0SDK from Salesforce allows developers to connect existing legacy system or any web based application with Salesforce using JavaScript and REST API. Canvas applications can be displayed in Chatter, Salesforce Mobile Cards or Visualforce page.<\/p>\n<p><strong>Why we are accessing\u00a0another Salesforce instance as\u00a0Canvas app<\/strong><\/p>\n<p style=\"text-align: justify;\">To get hands on with Canvas, most of article are around creating Heroku applications. I understand there are few developers who are not comfortable with Heroku. So to keep learning curve less, lets use Visualforce page to be exposed as Canvas application after all Visualforce is very advance MVC framework in itself.<!--more--><\/p>\n<p><span style=\"text-decoration: underline;\">Note:<\/span><\/p>\n<p style=\"text-align: justify;\">For this blog post, we will need two Salesforce Org. One will act as Identity provider and other will act as Service Provider. I have enabled My Domain and below are information<\/p>\n<ul>\n<li>https:\/\/jitendrazaa5-dev-ed.my.salesforce.com &#8211; <span style=\"text-decoration: underline;\">Service Provider<\/span><\/li>\n<li>https:\/\/jitendrazaa2-dev-ed.my.salesforce.com &#8211; <span style=\"text-decoration: underline;\">Identity Provider<\/span><\/li>\n<\/ul>\n<p><strong>Enable My Domain<\/strong><\/p>\n<p style=\"text-align: justify;\">First step is to enable My Domain in Service Provider Organization. I would suggest name your org with suffix like &#8220;spProvider&#8221; and &#8220;ipProvider&#8221; to avoid confusion.<\/p>\n<p><strong>Enable and setup SSO\u00a0in Service provider Org<\/strong><\/p>\n<p style=\"text-align: justify;\">You can read this article for <a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/implement-saml-based-single-sign-on-sso-salesforce-as-identity-provider-idp-salesforce-as-service-provider-sp\/\">more detail<\/a> on using Salesforce as IDp and SP. Assuming, you already have basic knowledge of SSO, we will jump start.<\/p>\n<p style=\"text-align: justify;\">In Service provider Organization enable SSO by navigating to &#8220;Setup | Security Controls | Single Sign-On Settings&#8221;.<\/p>\n<p style=\"text-align: justify;\">Download &#8220;Self Signed Certificate&#8221; from Identity provider by navigating to &#8220;Setup | Security Controls | Certificate and Key Management | Create Self Signed Certificate&#8221;.<\/p>\n<p style=\"text-align: justify;\">Below image shows configuration of SSO in Service provider organization, In our case domain &#8220;jitendrazaa5-dev-ed.my.salesforce.com&#8221;.<\/p>\n<figure id=\"attachment_4809\" aria-describedby=\"caption-attachment-4809\" style=\"width: 625px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/SSO-Setting-in-Service-Provider-Org.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-4809\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/SSO-Setting-in-Service-Provider-Org.png?resize=625%2C302&#038;ssl=1\" alt=\"SSO Setting in Service Provider Org\" width=\"625\" height=\"302\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/SSO-Setting-in-Service-Provider-Org.png?resize=1024%2C494&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/SSO-Setting-in-Service-Provider-Org.png?resize=300%2C145&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/SSO-Setting-in-Service-Provider-Org.png?resize=624%2C301&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/SSO-Setting-in-Service-Provider-Org.png?w=1308&amp;ssl=1 1308w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><figcaption id=\"caption-attachment-4809\" class=\"wp-caption-text\">SSO Setting in Service Provider Org<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">In above image Issuer is URL of identity provider and Entity Id is URL of current org which is Service provider.<\/p>\n<p style=\"text-align: justify;\">Once we informed Service provider Org that SSO is enabled on basis of federation Id, we need to make sure that Federation Id on user records on both Org must match else SSO will not work and those users will not able to use Canvas application.<\/p>\n<p><strong>Create force.com Canvas application in Identity provider Org<\/strong><\/p>\n<p>Navigate to &#8220;Setup | App Setup | Create | Apps | Connected Apps | New&#8221;<\/p>\n<figure id=\"attachment_4810\" aria-describedby=\"caption-attachment-4810\" style=\"width: 625px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-application-Configuration.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-4810\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-application-Configuration.png?resize=625%2C920&#038;ssl=1\" alt=\"Force.com Canvas application Configuration\" width=\"625\" height=\"920\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-application-Configuration.png?resize=696%2C1024&amp;ssl=1 696w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-application-Configuration.png?resize=204%2C300&amp;ssl=1 204w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-application-Configuration.png?resize=624%2C919&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-application-Configuration.png?w=1228&amp;ssl=1 1228w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><figcaption id=\"caption-attachment-4810\" class=\"wp-caption-text\">Force.com Canvas application Configuration<\/figcaption><\/figure>\n<p style=\"text-align: justify;\">As you can see in above setting, Canvas application is enabled for Chatter and Mobile navigation and it uses Visualforce page of Service provider Organization.<\/p>\n<p>Entity Id and ACS URL is copied from SSO settings of Service provided organization.<\/p>\n<p><strong>Creating Visualforce page using Canvas SDK in Service Provider Organization<\/strong><\/p>\n<p style=\"text-align: justify;\">Instead of using any Heroku or external web based application, we will be using Visualforce page with Canvas SDK. For this, we need to download Canvas SDK from <a href=\"https:\/\/github.com\/forcedotcom\/SalesforceCanvasJavascriptSDK\">this Github<\/a> repository and upload it as static resource. In below Visualforce page, we are simply reading Signed request from Identity provider Organization showing capabilities of Canvas SDK as well as we are displaying SessionId, OAuth token and refresh token of Service provider Organization.<\/p>\n<p style=\"text-align: justify;\">As Canvas application is configured to view from Chatter tab, Output will look like :<\/p>\n<figure id=\"attachment_4811\" aria-describedby=\"caption-attachment-4811\" style=\"width: 669px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-Application-Demo-with-Complete-Source-code.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4811\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-Application-Demo-with-Complete-Source-code.png?resize=669%2C452&#038;ssl=1\" alt=\"Force.com Canvas Application Demo with Complete Source code\" width=\"669\" height=\"452\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-Application-Demo-with-Complete-Source-code.png?w=669&amp;ssl=1 669w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-Application-Demo-with-Complete-Source-code.png?resize=300%2C203&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/09\/Force.com-Canvas-Application-Demo-with-Complete-Source-code.png?resize=624%2C422&amp;ssl=1 624w\" sizes=\"auto, (max-width: 669px) 100vw, 669px\" \/><\/a><figcaption id=\"caption-attachment-4811\" class=\"wp-caption-text\">Force.com Canvas Application Demo with Complete Source code<\/figcaption><\/figure>\n<ul>\n<li>\u00a0<\/li>\n<\/ul>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Source code for Canvas in Salesforce<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;apex:page showHeader=&quot;false&quot;&gt;\n    &lt;script type=&quot;text\/javascript&quot; src=&quot;{!URLFOR($Resource.CanvasSDK,&#039;SalesforceCanvasJavascriptSDK-master\/js\/canvas-all.js&#039;)}&quot; \/&gt;\n    &lt;script type=&quot;text\/javascript&quot;&gt;\n        var sid=&quot;{!GETSESSIONID()}&quot;.substr(1,30) +&#039;...&#039;;\n    \tfunction refreshSR(){\n        \tSfdc.canvas.client.refreshSignedRequest(function(data){\n                if(data.status == 200){\n                \tvar signedRequest = data.payload.response;\n                    var part = signedRequest.split(&#039;.&#039;)&#x5B;1];\n                    var obj = JSON.parse(Sfdc.canvas.decode(part));\n                    updateDisplay(obj) ;\n                }\n            });\n        }\n\n    function updateDisplay(obj){\n    \tsetValue(&#039;spSessionId&#039;, sid);\n        setValue(&#039;ipOAuth&#039;, obj.client.oauthToken.substr(1,30)+&#039;...&#039;);\n        setValue(&#039;ipUser&#039;, obj.context.user.fullName);\n        setValue(&#039;ipOrg&#039;, obj.context.organization.name);\n        setValue(&#039;ipRefresh&#039;, obj.client.refreshToken.substr(1,30)+&#039;...&#039;);\n    }\n\n    function setValue(eleId,val)\n    {\n       \tvar domEl = document.getElementById(eleId);\n        if(domEl){\n        \tdomEl.innerHTML = val;\n        }\n    }\n\n    Sfdc.canvas.onReady(function(){\n    \trefreshSR();\n    });\n    &lt;\/script&gt;\n\n        &lt;b&gt; &lt;u&gt; Service Provider Org &lt;\/u&gt;&lt;\/b&gt;\n        I am Canvas App from Salesforce Domain &lt;b&gt; Jitendra.zaa5@gmail.com &lt;\/b&gt;\n        User : {!$User.FirstName} {!$User.LastName}\n        Org : {!$Organization.Name}\n        Session Id : &lt;span id=&quot;spSessionId&quot;&gt;&lt;\/span&gt;    \n\n&lt;hr \/&gt;\n\n        &lt;b&gt; &lt;u&gt; Identity Provider Org  - Current Org &lt;\/u&gt; &lt;\/b&gt;\n        User : &lt;span id=&quot;ipUser&quot;&gt;&lt;\/span&gt;\n         Org : &lt;span id=&quot;ipOrg&quot;&gt;&lt;\/span&gt;\n         OAUth Token : &lt;span id=&quot;ipOAuth&quot;&gt;&lt;\/span&gt;\n        Refresh Token : &lt;span id=&quot;ipRefresh&quot;&gt;&lt;\/span&gt;\n\n&lt;\/apex:page&gt;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Resources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/ccoenraets\/salesforce-canvas-demo\">Canvas example using Nodejs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developer.salesforce.com\/page\/Force.com_Canvas\">List of all Canvas resources<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/resources.docs.salesforce.com\/sfdc\/pdf\/canvas_framework.pdf\">Developers guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/forcedotcom\/SalesforceCanvasJavascriptSDK\">Github Canvas SDK repository<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>After writing this article Salesforce has enabled CSP (Content Security Policy) which restricts adding Salesforce in iFrame. We can add MyDomain URL as CSP whitelisting and it works only if user already logged into other Salesforce instance. However, if user is not logged into other instance , internally OAuth navigates through login.salesforce.com which is too [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"jz_research_post":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[343,120,492,237],"class_list":["post-4807","post","type-post","status-publish","format-standard","hentry","category-salesforce","tag-canvas","tag-integration","tag-integration-patterns","tag-sso"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":7147,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-integration-with-nodejs-based-applications-using-canvas\/","url_meta":{"origin":4807,"position":0},"title":"Salesforce Integration with Nodejs based applications using Canvas","author":"Jitendra","date":"July 20, 2020","format":false,"excerpt":"How to use Canvas Signed Request Authentication with web based applications like Nodejs & how to use Canvas LifeCycle Handler Class","rel":"","context":"In &quot;Integration&quot;","block_context":{"text":"Integration","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/integration\/"},"img":{"alt_text":"Salesforce Canvas Integration","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/07\/Salesforce-Canvas-Integration-e1624579092898.png?fit=700%2C567&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/07\/Salesforce-Canvas-Integration-e1624579092898.png?fit=700%2C567&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/07\/Salesforce-Canvas-Integration-e1624579092898.png?fit=700%2C567&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/07\/Salesforce-Canvas-Integration-e1624579092898.png?fit=700%2C567&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":5094,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/10-salesforce-integration-design-considerations-from-architect-point-of-view-mind-mapping-included\/","url_meta":{"origin":4807,"position":1},"title":"10 Salesforce Integration design considerations from Architect point of view &#8211; Mind Mapping included","author":"Jitendra","date":"December 21, 2015","format":false,"excerpt":"After working on multiple Salesforce implementation project as an Architect, its time to share\u00a0what I learned from those implementations and would strongly suggest to be considered before designing any \"Salesforce Integration\". Below image shows \"integration mind mapping\" used by me. I use it to consider some major aspects\u00a0while discussing integration\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Integration Mind mapping diagram","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/12\/Salesforce-Integration-Mind-mapping-diagram.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4532,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-to-salesforce-integration-using-named-credentials-in-just-5-lines-of-code\/","url_meta":{"origin":4807,"position":2},"title":"Salesforce to Salesforce integration using Named Credentials in 5 lines","author":"Jitendra","date":"May 29, 2015","format":false,"excerpt":"I have already written article to integrate Salesforce with other Salesforce instance around 3 years back. In last 3 years, Salesforce has changed a lot. This time I will integrate Salesforce with other Salesforce only only in 5 lines of code, can you believe it \u00a0:) ? Check my old\u2026","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Authenticated Named Credential in Salesforce","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/05\/Authenticated-Named-Credential-in-Salesforce.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":6975,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-integration-patterns-best-practices-with-video\/","url_meta":{"origin":4807,"position":3},"title":"Salesforce Integration Patterns &#038; Best Practices &#8211; with Video","author":"Jitendra","date":"February 2, 2020","format":false,"excerpt":"When to use which integration patterns in Salesforce along with best practices. Video to show how to use Outbound message to integrate Salesforce without writing code","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Integration Patterns in Salesforce","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/02\/Integration-Patterns-in-Salesforce.png?fit=1200%2C425&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/02\/Integration-Patterns-in-Salesforce.png?fit=1200%2C425&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/02\/Integration-Patterns-in-Salesforce.png?fit=1200%2C425&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/02\/Integration-Patterns-in-Salesforce.png?fit=1200%2C425&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2020\/02\/Integration-Patterns-in-Salesforce.png?fit=1200%2C425&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":7770,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-integration-with-chatgpt\/","url_meta":{"origin":4807,"position":4},"title":"Salesforce Integration with ChatGPT","author":"Jitendra","date":"April 22, 2023","format":false,"excerpt":"Enhancing Conversational AI Capabilities and Ensuring Security","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce integration with chatGPT","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2023\/04\/Salesforce-integration-with-chatGPT.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2023\/04\/Salesforce-integration-with-chatGPT.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2023\/04\/Salesforce-integration-with-chatGPT.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2023\/04\/Salesforce-integration-with-chatGPT.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2023\/04\/Salesforce-integration-with-chatGPT.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4632,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/how-to-use-login-flow-in-salesforce\/","url_meta":{"origin":4807,"position":5},"title":"How to use Login Flow in Salesforce","author":"Jitendra","date":"July 7, 2015","format":false,"excerpt":"What is Login flow in Salesforce and how to solve common yet important problem using Salesforce declarative ability only.","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Login Flow Connection","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-Login-Flow-Connection.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-Login-Flow-Connection.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2015\/07\/Salesforce-Login-Flow-Connection.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/4807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/comments?post=4807"}],"version-history":[{"count":7,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/4807\/revisions"}],"predecessor-version":[{"id":7815,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/4807\/revisions\/7815"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=4807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=4807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=4807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}