Skip to main content

Heroku での Salesforce REST API の使用

学習の目的

この単元を完了すると、次のことができるようになります。

  • Salesforce REST API を使用するユースケースを挙げる。
  • 各種の認証について説明する。
  • Heroku のアプリケーションで Salesforce REST API を使用する方法を説明する。

Salesforce REST API および Heroku

Salesforce REST API を使用すると、簡単な HTTP と JSON 要求を使用して Salesforce と容易に統合できます。さまざまな REST API が用意されており、Salesforce 上のほぼすべてにアクセスできます。これにより、Salesforce 内のデータ、プロセス、およびメタデータを使用して、カスタムアプリケーションでさまざまな処理を行うことができます。REST API は認証に OAuth を使用します。これは、REST 認証を処理するための標準の方法です。

Salesforce のオブジェクトと Heroku との REST インターフェースを介した接続を示す画像

REST API を直接使用することもできますが、API を包み込む多くのラッパーライブラリが用意されており、Node.jsPythonRuby、Java などでそれらを容易に使用することができます。ラッパーライブラリは、認証、要求処理、応答処理など、低レベルのタスクを処理します。したがって、次のような HTTP 要求 (例として Node.js を使用) を手動で構築する必要はありません。

const query = 'SELECT name Account'; const url = 'https://MyDomainName.my.salesforce.com/services/data/v59.0/query/?q=' + encodeURIComponent(query); request.get(url, { 'auth':{ 'bearer':'bearerToken' } });

代わりに、Node.js 用のオープンソースの JSForce ライブラリを使用することで次のような簡単な行になります。

conn.query('SELECT name FROM Account', callback);

最終的に jsforce ライブラリは陰に隠れて同じことを行うだけですが、このライブラリを使用すると 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 を学習してください。

OAuth を使用する REST API 認証

REST API を使用する上で認証は重要な要素です。API への各要求に認証トークンまたは鍵を含める必要があるためです。アプリケーション単位のインテグレーションまたはカスタムユーザーインターフェースのどちらを使用する場合も、アプリケーションは Salesforce 内にある接続アプリケーションを必要とします。これにより、どのアプリケーションが要求を実行しているかを Salesforce で特定でき、組織のシステム管理者が API へのアクセスを管理できます。

単一ユーザー

アプリケーション単位のインテグレーションでは、単一インテグレーションユーザーのログイン情報をアプリケーションが認識する必要があります。これで REST API をコールし、ログイン情報を使用してログインして、認証トークンを返すことができます。

指定ユーザー

カスタムユーザーインターフェースを構築すると、アプリケーションは実際のログイン情報を一切受け取りません。代わりに、認証トークンを取得するコードが OAuth プロセスによってアプリケーションに提供されます。Salesforce へのアプリケーションのアクセスはユーザーが手動で認証します。そのフローは次のとおりです。

  • 認証を要求するページにユーザーがアクセスします。
  • Heroku のアプリケーションがユーザーを Salesforce OAuth ページにリダイレクトします。
  • アプリケーションが以前認証されていない場合、ユーザーに認証を促すメッセージが表示されます。

[アクセスを許可] ダイアログボックスが表示され、Postman を認証するかどうか尋ねているスクリーンショット。

  • 認証されると、Salesforce はユーザーをコードと共にアプリケーションに戻します。
  • アプリケーションはこのコードを使用してアクセストークンと更新トークンを取得します。
  • アプリケーションはアクセストークンを使用して、Salesforce への REST API コールを実行します。

通常、アクセストークンと更新トークンは暗号化され、何らかのセッション状態またはデータベースの形式で保存されます。そのため、ユーザーは要求のたびに何度も認証フローに進む必要はありません。

これらのトークンには機密情報が含まれます。そのため、取り扱いには最新の注意が必要です。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む