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を呼ぶ
Chromeエクステンションの「DHC」を使用しました。
非常に使いやすいHTTPクライアントなので、別の記事でも使い方の解説します。
接続を行うには、以下のようなフォーマットで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を使ったサンプルもありますが、このツールも癖があるので、またの機会に具体的なやり方を検証して、ご紹介したいと思います。