Salesforceで、ブラウザからWebサービス(REST API)を呼ぶ

Salesforceでは、様々なAPIが公開されています。

今回は、REST APIを利用して、組織の情報を取得したり、オブジェクトの作成、更新、削除等を行ってみたいと思います。

Javaなどのプログラミング言語から呼び出す方法もありますが、外部からSalesforceのREST APIを呼び出す仕組みを理解するために、今回はブラウザのプラグインを使って、シンプルに呼び出してみましょう。

特に認証の仕組みなどは、HTTPのリクエストとレスポンスをそのままみれるこの方法が、仕組みを理解して、複雑なアプリケーションを作成していくサンプルとしても良いと思います。

では、早速ハンズオン開始!

Salesforce側にアプリを登録する

はじめに、Salesforce側にアプリケーション登録(定義)を行います。

Salesforceに登録するアプリケーションは、クライアント(今回の場合は、我々のブラウザ)からSalesforceにアクセスする「入り口」のような役割を担います。このアプリを介して、Oauth認証というセキュアな認証を行った後で、実際のREST APIをCallするというわけです。

アプリの登録は、Salesforceの管理コンソールから行います。

「設定」⇒「ビルド」⇒「作成」⇒「アプリケーション」に行き、セクション「接続アプリケーション」で「新規」ボタンを押します。

※最新のUIだと、「アプリケーション」→「アプリケーションマネージャ」→「新規接続アプリケーション」から作成します。

すると、アプリの設定画面に遷移します。

アプリ名を入れると、API参照名が自動入力されます。

それ以外に入力するところは以下の通りです。

  • 「OAuth設定の有効化」にチェックを入れます。
  • 「コールバックURL」は今回は使用しませんが、必須入力項目なので、適当に入力します。
  • 「利用可能なOAuth範囲」から、「フルアクセス(Full)」を選択し、右側に移します。

上記設定が終わったら、「保存」ボタンでアプリを作成します。

下記が、作成されたアプリの画面です。

「コンシューマ鍵」の値と、クリックして公開リンクを押したら現れる「コンシューマの秘密」の値は、後ほど使いますので、メモしておきましょう。

メモできたら、「Manage」ボタンでアプリの設定をさらに行います。

OAuthポリシーのところで、「許可されているユーザ」のプルダウンを「管理者が承認したユーザは承認済み」に変更します。

これで、事前に権限を与えたユーザに関しては、アプリの使用承認画面なしでAPIを実行できます。

バッチユーザなど、決まった特定のユーザからREST APIを呼ぶ場合は、この形式が良いかともいます。

もうひとつは、「すべてのユーザは自己承認可能」という選択肢です。

これは、Twitter APIの使用確認のようなイメージで、各ユーザに承認を行わせるものです。

上記設定を行うと、画面の下の方に、「プロファイル」というセクションが表示されるようになります。

ここで、「プロファイルを管理する」ボタンを押すと、プロファイルの選択画面が開きますので、API呼び出しの権限をあげたいユーザのプロファイルを選択しましょう。

なお、選択したプロファイルに「APIの有効化」の権限があることは確認しておきます。

以上で、Salesforce側のアプリの登録、設定は終了です。

それでは、いよいよ、ブラウザからREST APIを呼んでみましょう。

REST APIを呼ぶ

「DHC」のインストール

Chromeエクステンションの「DHC」を使用しました。

非常に使いやすいHTTPクライアントなので、別の記事でも使い方の解説します。

Salesforceにクライアントから接続する

接続を行うには、以下のようなフォーマットでPOSTする必要があります。

https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=<コンシューマ鍵>&client_secret=<コンシューマの秘密>&username=<Salesforceユーザ>&password=<パスワード>

DHCでの設定は、以下の画面のように行います。

注意する点は、

メソッドは「POST」

「Content-Type」は「application/x-www-form-urlencoded」

にする。といったところでしょうか。

レスポンスが200で返ってきたら成功です。

戻りのJSONの中に、「access_token」という項目がありますが、次のステップで使いますので、メモしておきましょう。

REST APIをコールする

では、先ほどメモした「access_token」を手に、いよいよRST APIをコールしましょう!

情報を取得する

REST APIは、操作する内容によって、HTTPメソッドとURLが異なってきます。

情報を取得する場合は、GETを使用し、下記のようなURLを使用します。

https://<インスタンスID>.salesforce.com/services/data/v36.0/

注意するところは、ヘッダに、「Authorization」という項目を指定し、内容は、 「Bearer <先ほどメモしたaccess_token>」とすることです。

オブジェクトを作成する

作成の場合は、POSTを使用し、下記のようなURLを使用します。

https://<インスタンスID>.salesforce.com/services/data/v36.0/sobjects/Account

また、「Content-Type」は「application/json」にしましょう。

その上で、BODYに、各オブジェクトの項目を記述したJSONを書きます。

どのような指定をすればいいかは、REST APIのドキュメント等を参照してください。

まとめ

いかがでしたか?

RST APIのクエリを試してみるだけなら、以前書いた記事の「Workbench」を使ってもできますが、 ブラウザの機能拡張を使うと、構造が理解できると思います。

Salesforceのサイトには、curlを使ったサンプルもありますが、このツールも癖があるので、またの機会に具体的なやり方を検証して、ご紹介したいと思います。