Salesforce取引先担当者情報からWebAPIをポイント＆クリックで作成

CData Software ハンズオン（Salesforce取引先担当者情報からWebAPIをポイント＆クリックで作成）
# 使用するCData製品

- [CData API Server](http://www.cdata.com/jp/apiserver/)

# Salesforceアカウントの作成とセキュリティトークンの設定

あらかじめ以下の手順に従って、Salesforceアカウントとセキュリティトークンを取得しておきます。

[Salesforce Sales Cloud 開発者アカウント、および、セキュリティトークン取得方法](https://qiita.com/kuwazzy/items/68bc7c4a5b36721cfe83)

# CData API Serverのインストール

以下のサイトからCData API Serverのビルドをダウンロードします。

- [CData API Server](https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/HandsOn/20180517/CDataAPIServer.exe)

ダウンロードされた「setup.exe」ファイルを起動します。下記のようなインストーラが起動するので、ライセンス契約書を確認した上で、デフォルト設定のままインストールを進めて完了させます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/390c2826-eb41-3379-fa38-2f9f38bc5845.png)

途中、APIServerの管理者(admin)のパスワードを設定する画面が表示されるので、設定したパスワードは手元に控えておいてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/4e268000-3ba0-b471-68d9-a389f1e86335.png)


インストールが完了するとWindows右下の通知エリアに青い雲のアイコンのCData APIServerに組み込まれているWebサーバが起動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/67b4bdcf-6ea4-717f-d064-d686910c4b46.png)

また、デフォルトブラウザが起動してCData APIServerの管理コンソールへのログイン画面が起動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/de092928-28ca-de35-911a-7586673406b9.png)

# CData ADO.NET Provider for Salesforceのインストール

APIServerからSalesforceへの接続ライブラリである、CData ADO.NET Provider for Salesforceをインストールします。

一度、CDataAPIServerを停止します。Windows右下の通知エリアに青い雲のアイコンを右クリックして「Stop Server」を実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/0b4d693a-4bb4-4e39-0bb1-e8ef832c5966.png)


サーバーが停止したのを確認して、以下のサイトからCData ADO.NET Provider for Salesforceのビルドをダウンロードします。

- [CData ADO.NET Provider for Salesforce](https://s3-ap-northeast-1.amazonaws.com/cdatajbuilds/HandsOn/20180517/SalesforceADO.NETProvider.exe)

ダウンロードされた「setup.exe」ファイルを起動します。インストーラが起動するので、ライセンス契約書を確認した上で、デフォルト設定のままインストールを進めて完了させます。

インストールが完了したら、再度、Windows右下の通知エリアに青い雲のアイコンを右クリックして「Start Server」を実行します。Startしたら青い雲のアイコンをダブルクリックするとブラウザが起動してCData APIServerの管理コンソールへのログイン画面が表示されます。

# Salesforceへの接続設定

CData APIServerの管理コンソールへのログイン画面で、ユーザ名「admin」、インストーラで設定したパスワードを入力して「サインイン」します。サインイン出来ると「情報」ページが表示されます。ライセンスが認証されていない旨のメッセージが表示されるので、「30日間の評価版をアクティベーションする」ボタンをクリックして、表示されるダイアログに「名前：」「Eメール」と入力し、「Terms and Conditions」を確認したら「評価版をアクティベーションする」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/2b5de635-9828-ec77-215c-56b724a4a01e.png)

ブラウザのリフレッシュをして、プロダクトーに30日間の試用版（30 DAY TRIAL VERSION - 30 DAYS LEFT）が表示されることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/9eba4b5f-c0ff-b408-2380-d3657cdf991d.png)

「設定 > 接続」タブを開き、「+Add Connection...」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/35b7ff37-3de2-84e9-cdc6-a53125ed9ea0.png)

Databases内の「Salesforce」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/a4bafc6a-7c03-d82f-b0de-b3756e96edd0.png)

Salesforceへの接続情報を設定します。設定後「Test Connection」ボタンをクリックして「The connection was successful.」が表示されればCDataAPIServerからSalesforceへ接続出来たことになります。接続情報を「Save Changes」ボタンで保存します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/a6fb4b53-e642-ff5f-3a86-abbf20ea2dd3.png)


| 設定項目 | 設定値 |
|:-----------------|:------------------|
| Name | 任意（例では「Salesforce」と設定） |
| Provider Class | 変更不可（「System.Data.CData.Salesforce」と設定） |
| フォーマット設定 | デフォルト値 「Property List」 |
| User | SalesforceへのログインID |
| Password | Salesforceへのログインパスワード |
| Security Token | Salesforceから発行したセキュリティトークン  |
| Use Sandbox | Salesforceへのサンドボックス環境にアクセスするかどうか。DefaultではFalse |

接続情報が保存されてConnectionsにSalesforceへの接続情報が表示されることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/ceda0de5-1757-d70e-959c-df807e6a133c.png)

# APIエンドポイントの作成

「設定 > リソース」タブを開き、「リソースを追加...」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/1b6c4672-9373-693d-c302-545d4452f682.png)

先の手順で作成したSalesforceへのデータ接続設定を選択して「次へ」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/4e628ad5-de94-3ebd-a2ad-46ccd1e32e74.png)

Salesforce内のテーブルおよびビューが一覧として表示されます。今回は[Contacts（取引先担当者）]テーブルを選択して「次」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/8c5bfe21-bbe7-b90f-c1d4-9f45652673c8.png)


[Contacts（取引先担当者）]テーブル内の項目一覧が表示されます。デフォルトでは、「操作：」に全てチェックが付与されており、GET（SELECT）、POST（INSERT）、PUT（UPDATE）、DELETE（DELETE）と全てのCRUD操作を許可しています。また、アクセスユーザも「*(全ユーザ)」と設定してます。今回は、このまま「保存」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/1a77c6e7-6321-30fd-e757-bf99508fec77.png)


リソース一覧画面に戻り、「CData_Salesforce_Contact」リソースが追加されたことを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/24e0a078-8a0f-a346-193b-f757830584c2.png)

# APIアクセスユーザの作成

「設定 > ユーザー」タブに移動して、ユーザの「追加」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/4ef2302b-7f31-b2b1-ce52-1719ccd6d37d.png)

「ユーザーを追加」ダイアログが表示されます。ユーザー名を入力（任意）して、ユーザ毎の操作権限「GET（SELECT）、POST（INSERT）、PUT（UPDATE）、DELETE（DELETE）」全てにチェックを入れて「変更を保存」ボタンをクリックします。本画面で、一定時間内のAPIアクセス数制限（RateLimit）および同時接続数の制限を付与することも出来ます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/4dafd8af-793f-939f-6cae-80ab69206f8d.png)

ユーザ一覧画面に戻り、ユーザが追加されてAuthトークンが生成されたことを確認します。ユーザ名と本AuthトークンはAPIアクセス時に必要となりますの手元に控えておいてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/d489d4b9-3e07-d675-8f07-bf18f372ef0e.png)

# WebAPIへのアクセス

それでは、作成したWebAPIにアクセスしてみましょう。「API」タブを開くと、APIリファレンスが開きます。
左側にリソースの一覧が表示されますので、上の手順で追加したリソース「/api.rsc/sakila_actor」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/a21fe684-2fbd-fd43-8c42-f5ace3627113.png)


右側にHTTPメソッド、および、各種プロパティや追加フォーマットの情報が表示されます。GETメソッドは、Webブラウザからリクエストを発行することができるので、ブラウザの新しいタブ、もしくは、Windowを開いてURLに「 http://localhost:8387/api.rsc/CData_Salesforce_Contact/ 」を入力して開いてみます。ブラウザのレスポンスとして、JSON形式で、Salesforce内のactorテーブル内のデータが表示されれば成功です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/5ca5ccdc-2d03-ed1e-ebbb-f2dceadeda00.png)

管理コンソールと同一のWebブラウザからアクセスする場合は、ユーザ認証が必要ありませんが、新規ブラウザからだと認証が必要となります。ユーザ名に上記手順で作成したAPIアクセスユーザ名、パスワードにAuthトークンを入力してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/9a0a6ec7-a221-e92b-9951-6e6e9faf2e7b.png)

SalesforceからWebAPIを作成して、Webブラウザからアクセスすることが出来ました。