Heroku での Salesforce REST API の使用
この単元を完了すると、次のことができるようになります。
- Salesforce REST API の使用事例を理解する。
- さまざまな種類の認証を理解する。
- Heroku のアプリケーションで Salesforce REST API を使用する方法を理解する。
Salesforce REST API を使用すると、簡単な HTTP と JSON 要求を使用して Salesforce と容易に統合できます。さまざまな REST API が用意されており、Salesforce 上のほぼすべてにアクセスできます。これにより、Salesforce 内のデータ、プロセス、およびメタデータを使用して、カスタムアプリケーションでさまざまな処理を行うことができます。REST API は認証に OAuth を使用します。これは、REST 認証を処理するための標準の方法です。
REST API を直接使用することもできますが、API を包み込む多くのラッパーライブラリが用意されており、Node.js、Python、Ruby、Java などでそれらを容易に使用することができます。ラッパーライブラリは、認証、要求処理、応答処理など、低レベルのタスクを処理します。したがって、次のような HTTP 要求 (例として Node.js を使用) を手動で構築する必要はありません。
var query = 'SELECT name Account'; var url = 'https://na1.salesforce.com/services/data/v20.0/query/?q=' + encodeURIComponent(query); request.get(url, { 'auth': { 'bearer': 'bearerToken' } });
代わりに、Node.js 用のオープンソースの nforce ライブラリを使用することで次のような簡単な行になります。
org.query({ query: 'SELECT name FROM Account' });
最終的に nforce ライブラリは陰に隠れて同じことを行うだけですが、このライブラリを使用すると API が使いやすくなります。
アプリケーション単位のインテグレーションおよびカスタムユーザインターフェースを Salesforce REST API 上に構築できます。これらの最大の違いは、認証の処理方法です。アプリケーション単位のインテグレーションでは、アプリケーションが単一のインテグレーションユーザを認識し、REST API へのすべてのコールをこのユーザとして実行します。カスタムユーザインターフェースでは、カスタムアプリケーションとの認証をユーザが直接行いません。代わりに、ユーザは OAuth プロセスに従って、カスタムアプリケーションがユーザに代わって API コールを実行することを承認します。カスタムユーザインターフェースを使用している指定ユーザに代わって REST API への各要求が実行されます。
アプリケーション単位のインテグレーションの 1 つの使用事例として、データの変換と関連付けを行った後にデータの複製またはプロキシ化を行って別のシステムでデータを使用することがあります。たとえば、Heroku 上で動作する顧客向けの注文管理アプリケーションが Salesforce から顧客情報を取得する必要があります。この設定では、単一インテグレーションユーザを使用して、必要なすべての情報を Salesforce から取得できます。
ただし、注文管理アプリケーションがバックオフィス向けであり、ユーザが Salesforce を介してログインする場合、アプリケーションは、OAuth を使用するカスタムユーザインターフェースになります。これにより、注文管理アプリケーションが指定ユーザに代わって API 要求を実行できます。この場合、セキュリティおよび監査の目的で、どの指定ユーザが各 REST コールを実行するかを認識することが重要になります。
Heroku では、どちらの種類のアプリケーションも容易にリリースでき、OAuth と Salesforce REST API を容易に活用できます。
時間が取れるときに Salesforce REST API のドキュメントを参照して低レベルの API を学習してください。Heroku へのリリースを含む完全なクイックスタートと、REST API を使用する基本アプリケーションについては、Quick Force Node (JavaScript) または Quick Force Java を確認してください。
REST API を使用する上で認証は重要な要素です。API への各要求に認証トークンまたは鍵を含める必要があるためです。アプリケーション単位のインテグレーションまたはカスタムユーザインターフェースのどちらを使用する場合も、アプリケーションは Salesforce 内にある接続アプリケーションを必要とします。これにより、どのアプリケーションが要求を実行しているかを Salesforce で特定でき、組織のシステム管理者が API へのアクセスを管理できます。
アプリケーション単位のインテグレーションでは、単一インテグレーションユーザのログイン情報をアプリケーションが認識する必要があります。これで REST API をコールし、ログイン情報を使用してログインして、認証トークンを返すことができます。
カスタムユーザインターフェースを構築すると、アプリケーションは実際のログイン情報を一切受け取りません。代わりに、認証トークンを取得するコードが OAuth プロセスによってアプリケーションに提供されます。Salesforce へのアプリケーションのアクセスはユーザが手動で認証します。そのフローは次のとおりです。
- 認証を要求するページにユーザがアクセスします。
- Heroku のアプリケーションがユーザを Salesforce OAuth ページにリダイレクトします。
- アプリケーションが以前認証されていない場合、ユーザに認証を促すメッセージが表示されます。
- 認証されると、Salesforce はユーザをコードと共にアプリケーションに戻します。
- アプリケーションはこのコードを使用してアクセストークンと更新トークンを取得します。
- アプリケーションはアクセストークンを使用して、Salesforce への REST API コールを実行します。
通常、アクセストークンと更新トークンは暗号化され、何らかのセッション状態またはデータベースの形式で保存されます。そのため、ユーザは要求のたびに何度も認証フローに進む必要はありません。
これらのトークンには機密情報が含まれます。そのため、取り扱いには最新の注意が必要です。