# Salesforce

### Create a Salesforce application

To integrate Appmixer with Salesforce, you are going to need an app in your Salesforce account. You can either create a new one or use one that already exists.

To create an app, you have to login into [Salesforce Developer portal](https://developer.salesforce.com). Once logged in, on the left menu, look up **Platform Tools -> Apps -> App Manager**. This will show you a list of your existing apps and provide the option to create a new one via the *New Connected App* on the top right side:

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-da4a925035cfb1c5afb50d4df30652f5815fc801%2Fsalesforce-1.png?alt=media" alt=""><figcaption><p>App manager</p></figcaption></figure>

In the next screen, you will be requested to fill out some basic data about your new app. Look out for the **API (Enable OAuth Settings)** section. Tick the Enable OAuth Settings checkbox, and fill out the callback URL and scopes as shown in this screenshot:

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-1ad64e1694a7f1876c2ab4f7ce915713540a5130%2Fsalesforce-2.png?alt=media" alt=""><figcaption><p>Filling OAuth settings for your application</p></figcaption></figure>

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-00b2031c7e133809d54e0b1f45173fc79e3ab7b7%2Fsalesforce-10.png?alt=media" alt=""><figcaption><p>Configure additional properties</p></figcaption></figure>

Check the **Require Secret for Web Server Flow**, **Require Secret for Refresh Token Flow** and **Enable Authorization Code and Credentials Flow** checkboxes.

### Getting client id and secret

With your app ready, you can get the client id and secret required for integrate Salesforce into Appmixer. Go to the **App Manager** and search for your app in the list. On the dropdown in the right side, click the **View** option.

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-f4670049cf65bf679d6ddaeb47157da65f7fdf31%2Fsalesforce-3.png?alt=media" alt=""><figcaption><p>Navigating to your app details</p></figcaption></figure>

In the next screen, look out for **API (Enable OAuth Settings)** section and click on the **Manage Consumer Details** button. You should see now your client id (shown as Consumer Key) and secret (shown as Consumer Secret):

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-6f1678e79de48315d6982e07b868c5ba432703be%2Fsalesforce-4.png?alt=media" alt=""><figcaption><p>Salesforce client id (Consumer Key) and secret (Consumer Secret)</p></figcaption></figure>

Now we can provide these values to Appmixer. Log into the Backoffice and go to the Configuration section. Create a configuration service for Salesforce as follows:

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-4e02c0a828c590417dea20f5316765d84820baa8%2Fsalesforce-5.png?alt=media" alt=""><figcaption><p>Creating configuration for Salesforce in the Backoffice</p></figcaption></figure>

Finally, set the *clientId* (Consumer Key in Salesforce) and the *clientSecret* (Consumer Secret in Salesforce) like this:

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-967287ea9e7a64d20ca46c19759d79cc8b0d9658%2Fsalesforce-6.png?alt=media" alt=""><figcaption><p>Adding clientId and clientSecret to Appmixer</p></figcaption></figure>

### Authentication configuration

The Salesforce OAuth authentication offers several behaviors when users try to authenticate. This is the summary of the available options (taken from Salesforce [Oauth docs](https://help.salesforce.com/s/articleView?id=sf.remoteaccess_oauth_web_server_flow.htm\&type=5)):

* `login`—The authorization server must prompt the user for reauthentication, forcing the user to log in again.
* `consent`—The authorization server must prompt the user for reapproval before returning information to the client.
* `select_account`—If present, take one of the following actions.
  * If zero or one hint is available and the user is logged in, show the approval page without prompting for login.
  * If zero or one hint is available and the user isn’t logged in, prompt for login.
  * If more than one hint is available, show the account chooser.

By default, we use the `login` option, but you can configure it through the Backoffice.

1. Login into the Backoffice, and go to the Services module. Then add a new service like this:

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-0460fb0016367e748b38f44158a72423756531bf%2Fsalesforce1.png?alt=media)

2\. Add a *promptType* key, and set it to one of the supported values by Salesforce:

![](https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-c63707a45fd947fc53e9394a6207d74b5201e88b%2Fsalesforce2.png?alt=media)

#### Login URL

The default login URL is <https://login.salesforce.com>, this can be changed with a *baseUrl.*

<figure><img src="https://802996127-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIAGKHlIqVKJe9agnFr14%2Fuploads%2Fgit-blob-ec92f4d829573710dc04f45e9250009ca3286d38%2Fsalesforce-9.png?alt=media" alt=""><figcaption></figcaption></figure>
