| == Twitter Salesforce Example |
| |
| === Introduction |
| |
| This example listen for tweets which are mentioning the `+@cameltweet+` |
| twitter account. Information from the user whom mentions is then created |
| as a contact in Salesforce. |
| |
| === Configuring Twitter |
| |
| This example is already configured using a testing purpose twitter |
| account named `cameltweet'. And therefore the example is ready to run |
| out of the box. |
| |
| This account is only for testing purpose, and should not be used in your |
| custom applications. For that you need to setup and use your own twitter |
| account. |
| |
| === Configuring Salesforce |
| |
| This example uses Camels own test Salesforce developer account, you |
| would most likely want to sign up with your own Developer account at |
| https://developer.salesforce.com/. After you have done that, you’ll need |
| to create a Connected Application for your integration. |
| |
| To do this after logging in to your Salesforce Developer account, |
| navigate to _Apps_ located under _Build_ and then _Create_, there you |
| should see _Connected Apps_ table in the heading click on _New_ and fill |
| in the indicated required fields and enable the _OAuth Settings_, for |
| _Callback URL_ you can use |
| https://login.salesforce.com/services/oauth2/success. |
| |
| In the _Available OAuth Scopes_ add _Access and manage your data (api)_ |
| and _Perform requests on your behalf at any time (refresh_token, |
| offline_access)_. |
| |
| After clicking _Save_ click on _Manage_ on the top of the page and then |
| click on _Edit Policies_. Change the _IP Relaxation_ to _Relax IP |
| restrictions_ and click on _Save_. |
| |
| *NOTE:* This will get you started quicker, but production you should |
| re-evaluate to comply with your security needs. |
| |
| Next gather your _Consumer Key_ (_clientId_ property), _Consumer Secret_ |
| (clientSecret) and either use username and password of the developer |
| account; or get the refresh token from Salesforce (more on this below). |
| |
| ==== Adding the Twitter screen name custom field |
| |
| The example adds a custom field to _Contact_ SObject, to add it to your |
| Salesforce environment go into _Customize_ under _Build_ and choose |
| _Fields_ under _Contact_. |
| |
| In _Contact Custom Fields & Relationships_ click on _New_ and add a |
| field of type `+Text+` with field label `+Twitter Screen Name+`, length |
| of 15 and for uniqueness select _Do not allow duplicate values_ and set |
| the _Set this field as the unique record identifier from an external |
| system_. |
| |
| ==== Getting the OAuth refresh token |
| |
| In your browser go to the URL change the `+__YOUR_CLIENT_ID_HERE__+` |
| with your connected application _Consumer Key_: |
| |
| `+https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id=+`**YOUR_CLIENT_ID_HERE**`+&redirect_uri=https://login.salesforce.com/services/oauth2/success&display=touch+` |
| |
| Allow access to the application, and you’ll end up on a page with |
| `+refresh_token+` after the `+#+`, something like: |
| |
| `+https://login.salesforce.com/services/oauth2/success#access_token=..&refresh_token=+`**<refresh_token>**`+&instance_url=...&issued_at=...&signature=...&scope=...&token_type=Bearer+` |
| |
| ==== How to generate Salesforce Data Transfer Objects (DTOs) |
| |
| The best way to generate Java representation of Salesforce SObjects is |
| to use the `+camel-salesforce-maven-plugin+`, for example: |
| |
| .... |
| $ mvn org.apache.camel.maven:camel-salesforce-maven-plugin:generate \ |
| -DcamelSalesforce.clientId=<client id> \ |
| -DcamelSalesforce.clientSecret=<client secret> \ |
| -DcamelSalesforce.userName=<username> \ |
| -DcamelSalesforce.password=<password> |
| .... |
| |
| You can specify the only the SObjects you’ll integrate with using |
| `+camelSalesforce.includePattern+` parameter, like: |
| |
| .... |
| $ mvn org.apache.camel.maven:camel-salesforce-maven-plugin:generate \ |
| -DcamelSalesforce.clientId=<client id> \ |
| -DcamelSalesforce.clientSecret=<client secret> \ |
| -DcamelSalesforce.userName=<username> \ |
| -DcamelSalesforce.password=<password> \ |
| -DcamelSalesforce.includePattern=Contact |
| .... |
| |
| To generate only DTOs needed for Contact, but the parameter value can be |
| specified using regular expressions. |
| |
| === Build |
| |
| You will need to compile this example first: |
| |
| .... |
| mvn compile |
| .... |
| |
| === Run |
| |
| To run the example type |
| |
| .... |
| mvn spring-boot:run |
| .... |
| |
| To stop the example hit ctrl+c |
| |
| === Help and contributions |
| |
| If you hit any problem using Camel or have some feedback, then please |
| https://camel.apache.org/support.html[let us know]. |
| |
| We also love contributors, so |
| https://camel.apache.org/contributing.html[get involved] :-) |
| |
| The Camel riders! |