Using force.com from your Heroku apps

July 8, 2014 by

Force.com and Heroku are both part of the Salesforce1 platform. There are lots of great ways to leverage force.com from your Heroku app. This article will give an overview and pointers to get you started.

Heroku Connect

The easiest way to link force.com and Heroku is to use our two-way data synchronization service Heroku Connect. This point-and-click service lets you synchronize data from force.com into the Postgres database attached to your Heroku app. You can read and write data directly in Postgres, and changes are automatically synchronized with force.com.

Note that Heroku Connect moves data asynchronously. This means that when your app writes data to Postgres, control flow returns as soon as the data is written to the database. The data won’t be copied to force.com until later (various factors affect latency). The asynchronous operation has some advantages, but isn’t a fit for situations where you need the answer from force.com immediately.

Force.com client libraries

There are great client libraries for accessing force.com available for almost any language. These libraries give you synchronous accesss to many of the APIs provided by force.com. All of these libraries are open source, and you are encouraged to submit issues, patches, or improvements.

Force.com offers a number of different APIs. Here is a quick rundown on those APIs to help you find the client library that acccess the API you want:

API Description
SOAP CRUD API using SOAP protocol, support for batch operations
REST CRUD API using REST (JSON or XML over HTTP)
Streaming Event notification API using CometD protcol
Bulk Asynchronous API for reading or writing large amounts of data
Metadata API for making schema modifications

Java

The force.com Web Service Connector is the standard client library published by Salesforce for accessing force.com. You can use the WSC to interact with the force.com SOAP API or Bulk API.

You can access the force.com Streaming API using the standard CometD implementation:

http://download.cometd.org/cometd-2.2.0-distribution.tar.gz

https://developer.salesforce.com/page/Getting_Started_with_the_Force.com_Streaming_API

Ruby

Access the force.com REST API and Streaming API with the restforce gem (https://github.com/ejholmes/restforce):

gem install restforce

You can access the Bulk API with the salesforce_bulk gem (https://github.com/jorgevaldivia/salesforce_bulk):

gem install salesforce_bulk

Node.js

Node.js is supported by the awesome nforce package from Kevin O’Hara (https://github.com/kevinohara80/nforce):

npm install nforce

Nforce supports the REST API and the Streaming API.

PHP

Access the SOAP API using the Force.com Toolkit for PHP available here:

https://github.com/developerforce/Force.com-Toolkit-for-PHP

Python

Access the REST API using the simple-salesforce package (https://github.com/neworganizing/simple-salesforce):

pip install simple_salesforce

An older library for acessing the SOAP API is the salesforce-python-toolkit:

https://code.google.com/p/salesforce-python-toolkit/

You can access the Bulk API with the salesforce-bulk package (https://github.com/heroku/salesforce-bulk):

pip install salesforce-bulk

Objective-C (iOS)

Salesforce publishes the Salesforce Mobile SDK for iOS here:

https://github.com/forcedotcom/SalesforceMobileSDK-iOS

Java - Android

Salesforce publishes the Salesforce Mobile SDK for Android here:

https://github.com/forcedotcom/SalesforceMobileSDK-Android

Command line

The force.com Command Line Interface is a utility written in GO for accessing the SOAP API and Metadata API. It can be very useful for scripting operations to force.com:

https://github.com/heroku/force