見出し画像

初心者でも分かる!SalesforceのAPIを外部アプリと連携して使用する方法

ノーコードでアプリを開発するとき、Salesforceからデータを取得したり、データを更新したい時があります。

Zapier等のiPaaSやコネクタを仲介させるのが最も簡単な方法ですが、課金が発生してしまうほか、単純に「直接データ連携させる仕組みがわからないのが、なんとなく気持ち悪い」ということもあるでしょう。

しかし、Salesforceのヘルプを読んでも、非エンジニアにとっては難しいワードが登場し、もれなく挫折します。

そこで、今回は「SalesforceのAPIと外部アプリをノーコードで連携させる方法」をご紹介したいと思います。

SalesforceのAPIを使ってデータを取得する

SalesforceなどのCRMや、クラウドサービスの多くは、APIという外部アプリとデータをやり取りする仕組みが用意されています。

SalesforceにもこのAPIが備わっており、APIを利用することで、ノーコードツールからSalesforceのデータを取得したり、逆にSalesforceにデータを作成したり、データの更新することができます。

SalesforceのAPIを利用する際に、特に気をつけたいのがセキュリティです。

例えば、APIの中でも、「郵便番号を送信すると住所を返す」ようなオープンAPIであれば、セキュリティを気にする必要はありません。

しかし、Salesforceには、個人情報機密データが蓄積されており、万が一、自分の会社のSalesforceのAPIに誰でも自由にアクセスできてしまったら、大変なことになります。

そのため、SalesforceのAPIを安全に利用するために、「OAuth2.0認証」と呼ばれる方式に沿ってデータの取得を行う必要があります。

OAuth2.0認証の流れ

OAuthのAuthは、Authorization(権限の付与)を意味します。

そして、OAuth認証とは、他のアプリケーションやサービスに対して、自分のデータへのアクセス権限を付与し、操作を許可するための規格です。

例えば、ZapierなどのiPaaSでSalesforceを初めて連携する時に、IDとパスワードが求められ、「(あなた=管理者の代わりに)以下の処理を許可してよいですか?」と聞かれると思います。

そして、一度許可をすれば、その後はIDやパスワードを入力しなくても、iPaaSは管理者と同等の権限を持って、さまざまなデータの取得や操作を自動的に行なってくれます。

その裏側では、OAuth認証が行われています。

iPaaS側では、最初にユーザーがIDとパスワードを入力した際に、データにアクセスする許可証となる「アクセストークン(access_token)」と呼ばれる秘密の文字列をSalesforceから受け取っており、それを利用してデータにアクセスしています。

そして、OAuth認証の中でも、このようにアクセストークンを要求・付与する業界標準の規格を「OAuth 2.0」といいます。

Salesforceにおいても、APIにデータ取得をリクエストする時に、「アクセストークン」を含めることで、Salesforceにデータを取得する資格があると認められ、データへアクセスができます。

※OAuthとアクセストークンについては、こちらの記事が分かりやすいです。

Salesforceでデータを取得するまでの流れ

Salesforceのデータへのアクセスするには、アクセストークンが必要がある、ということがわかりました。

しかし、このアクセストークンは、セキュリティ上、有効期限が設定されており、一定時間経つと使用不可になります。

そこで、「リフレッシュトークン(refresh_token)」と呼ばれる別のトークンをSalesforceに送信すると、新しいアクセストークンを発行してもらうことができます。

そのため、SalesforceにAPIでデータにアクセスする流れは、最終的には、以下のようになります。

1.Salesforceからリフレッシュトークンを取得する

2.リフレッシュトークンを使ってアクセストークンを取得する

3.アクセストークンを使ってSalesforceのAPIにアクセスする

順番に進めていきましょう。

1.Salesforceのリフレッシュトークンを取得する

まずは、APIを利用する許可証であるアクセストークンを継続的に発行してもらうために、リフレッシュトークンを取得します。

手順が少し複雑ですが、一度入手すれば、その後は基本的に再発行する必要はありません。

以下の手順に従って、リフレッシュトークンの取得を行います。
こちらの英語記事を参考にしました)

1.お使いのSalesforceCRMに管理者としてログインします。

2.ライトニングの場合、右上の歯車のボタンから設定ページに遷移します。

3.設定ページのクイック検索で、「アプリケーションマネージャー」と入力して、ページに移動します。

4.「アプリケーションマネージャ」ページのの右上隅にある「新規接続アプリケーション」をクリックします。

5.「新規接続アプリケーション」ページで、
・接続アプリ名
・API 名
・取引先責任者のメールアドレス
を入力します(以下は例)。

6.すぐ下の「API (OAuth設定の有効化)」セクションで、「OAuth設定の有効化」にチェックを入れます。

7.「コールバック URL」フィールドには、

https://login.salesforce.com/

と入力します。

8.「選択したOAuth 範囲」フィールドでは、
・APIを利用してユーザーデータを管理 (api)
・いつでも要求を実行 (refresh_token、offline_access)
・Web ブラウザを使用してユーザデータを管理 (web)
の3つ選択し、 追加ボタンをクリックします。

保存ボタンをクリックして、新しい接続アプリケーションを保存します。

9.アプリケーションマネージャーの一覧の中から、自分が作成したアプリ名を見つけて、▼メニューから「Manage」を選択します。

10.開いたページで、「ポリシーを編集」ボタンをクリックします。

OAuth ポリシーの「許可されているユーザ」を、「すべてのユーザーは自己承認可能」を選択し、保存ボタンを押します。

11.アプリケーションマネージャーのページに戻り、一覧から自分が作成したアプリを見つけて、▼メニューから「参照」を選択します。

API(OAuth設定の有効化)の「コンシューマの詳細を管理」ボタンをクリックします。

ログインや2段階認証を行った後、

「コンシューマ鍵」

「コンシューマの秘密」

が表示されるので、これをメモし、大切に保管します。


12.Chromeなど、自分が使っているブラウザで、以下のURLを入力します。

https://<インスタンス>.salesforce.com/services/oauth2/authorize?response_type=code&client_id=<コンシューマ鍵>&redirect_uri=https://login.salesforce.com/

<コンシューマ鍵>は、11.で取得したもので置き換えます。

<インスタンス>は、Salesforceの設定→「組織情報」の中に、「インスタンス」という項目がありますので、これを入力します(AP0 など)。

このURLをブラウザで開くと、URLがリダイレクトして変化します。

このcode=xxxの部分をメモして、大切に保管しておきます。

https://login.salesforce.com/?code=xxx

次に、ご自身が利用しているAPIのテストツールを開きます。

APIのテストツールはPOSTMANなどが有名ですが、今回はGoogleの拡張機能「API Tester」を利用します。

API TesterのURL欄には、以下を入力します。

https://<インスタンス>.salesforce.com/services/oauth2/token?code=<先ほど取得したCODE>&grant_type=authorization_code&client_id=<コンシューマ鍵>&client_secret=<コンシューマ秘密鍵>&redirect_uri=https://login.salesforce.com/

<>部分は、それぞれメモに控えておいた情報を入れ込みます。

そして、METHODで「POST」を選択し、「Send」をクリックします。

すると、「Response」に、"refresh_token":"xxxx"とリフレッシュトークンが表示されるので、これをメモして大切に保管します。

※もし、「この組織では REST API が有効になっていません」というエラーが発生した場合は、salesforceの設定→管理→ユーザ→プロファイルを選択し、更新するプロファイルで「編集」をクリックし、システム管理者権限の「APIの有効化」にチェックを入れて、保存ボタンを押します。

【トークンの取り扱いに注意!】

アクセストークンやリフレッシュトークンは、Salesforceデータへのアクセス権限そのものですので、大切に保管します。

また、Salesforce側でも、アプリ側に操作を許可する範囲を適切に設定し、大切な情報の漏洩リスクを減らします。

そして、クライアント側の処理には、決してこのリフレッシュトークンやアクセストークンを貼り付けて利用しないでください。

ブラウザの開発者ツールでトークンが丸見えになったり、アプリを解析されてトークンが漏洩してしまう可能性があります。

OAuth認証は、ユーザーの目に触れないサーバー側で行います。

ノーコードであれば、Bubbleの場合は、Backend workflowを使ったり、あるいは、バックエンドノーコードツール(backendlessやXano)上でAPIを実行し、OAuth認証やデータの取得を行います。

そして、バックエンドノーコードツールのAPIを介して、フロントエンドのノーコードツールとデータのやり取りを行うことで、ユーザーからはトークンを秘匿することができます。

2.リフレッシュトークンを利用して、アクセストークンを取得する

次に、リフレッシュトークンを使って、アクセストークンを取得します。

以降の操作は、実際にはバックエンドノーコードツール上で行うことになりますが、今回はデモとして、API Testerで実施してみます。

先ほどと同じ要領で、<>内の情報は差し替え、URLを入力します。

https://<インスタンス>.salesforce.com/services/oauth2/token?grant_type=refresh_token&client_id=<クライアント鍵>&refresh_token=<リフレッシュトークン>

「POST」を選択して、Sendをクリックします。

すると、RESPONSEに「"access_token":"xxx"」が表示されますので、xxx部分をメモしておきます。

3.アクセストークンを使って、Salesforceからデータを取得する

いよいよ、SalesforceのデータにAPIでアクセスします。

データを取得するには、API Testerで以下の通り設定を行います。

・METHOD:GET

・URL:

https://<自分のSalesforceのドメイン>.my.salesforce.com/services/data/v55.0/query

※「v55.0」の箇所は、必要に応じて任意のAPIのバージョンを入力します。

・QUERY PARAMETERS:
URLの末尾に付与する「?xxx=yyy」をクエリパラメータと呼びます。
xxxはname、yyyはvalueと呼びます。

今回、nameは「q」と入力し、valueには、SOQL(Salesforce版のSQL)のクエリを入力します。

※SOQLについては、こちらの記事が参考になります。

今回は試しに、Accountのオブジェクトから、100件分のNameを取得するクエリを入力します。

valueには、以下のように入力します。
※半角スペースは、ツールによっては「+」「%20」に置き換えが必要です。

SELECT Name from Account LIMIT 100

URLとQUERY PARAMETERSは合体され、最終的に以下のようになります。

https://<自分のSalesforceのドメイン>.my.salesforce.com/services/data/v55.0/query?q=SELECT Name from Account LIMIT 100

・HEADERS
Salesforceのデータにアクセスするには、ヘッダーに認証情報であるアクセストークンを含めます。

ここには、
・Authorization
・Bearer[半角スペース]<取得したアクセストークン>
 と入力します。

この状態で「Send」をクリックすると、以下のように、Accountのオブジェクトから100件分のNameを取得することができました。

SalesforceのAPI連携をどんどん活用しよう!


無事にSalesforceからデータを取得することができたでしょうか?

今回は、SalesforceとのAPI接続の方法について、大まかな流れを学び、API Testerでデモンストレーションを行いました。

APIやOAuth認証の仕組みについて、説明だけ聞いてもピンときませんが、このように実際に手を動かしてみることで、体感できたことでしょう。

実務上では、バックエンドのノーコードツール上でこのSalesforceのAPIを実行することになりますが、それはまた後で記事にしたいと思います。

お読みいただき、ありがとうございました!


いいなと思ったら応援しよう!