当スクリプトは、次の2つの機能を包含するサンプルプログラムです
- JSON Web Token で署名されたアクセストークンを使って、安全にログインを行う (nforce 版は user/pass)
- 変更データキャプチャのストリームを購読(Subscribe)し、取得される RAW データを確認する
- Salesforce 環境が準備できていること (Developer 推奨)
- Salesforce 環境で「接続アプリケーション」が、次の設定で作成されていること
- OAuth 認証
- デジタル認証 (OpenSSL などでの自己証明書で OK) (nforce 版では不要)
- 利用するユーザは「管理者が承認したユーザは事前承認済み」としてプロファイルを登録していること
- node.js 10.x 以降のランタイムが使えるようになっていること
- git コマンドが利用できること
- Salesforce 上のイベントオブジェクト内に
dummy__cフィールドを作成しておくこと
次のコマンドを実行します
git clone https://github.com/tabesfdc/events-sample2.gitローカルに events-sample2 というディレクトリができます。各コマンドは、このディレクトリ内にありますので、cd events-sample2 でカレントディレクトリを変更します。
次に、npm install コマンドを実行して、必要な npm パッケージを導入します。
.env ファイルの準備が必要です。これを、プログラムのルートディレクトリに配置します。
PRIVATE_KEY='LS0tLS1CRUdJTiBSU0E (中略)VORCBSU0EgUFJJVkFURSBLRVktLS0tLQo='
ISSUER='3MVG9pe2TC (中略) f2g7eGk09jJaIP6w'
AUDIENCE='https://login.salesforce.com'
SUBJECT='test@example.com'各々は次のとおりです
PRIVATE_KEY- 作成した秘密鍵をbase64化したものを定義します。例えばbase64 ./cert/server.keyなどで作成しますISSUER- 接続アプリケーション内のコンシューマ鍵AUDIENCE-https://login.salesforce.com固定SUBJECT- ログインするユーザ名
CLIENT_ID='3MVG9pe2TC (中略) f2g7eGk09jJaIP6w'
CLIENT_SECRET='80CB1 (中略) 839F19AE3'
REDIRECT_URL='https://localhost:3000/oauth/_callback'
API_VERSIOIN='v38.0'
ENV='production'
USER_ID='xxxx@yyyy.com'
PASSWORD='password'各定義は次のとおりです
CLIENT_ID- 接続アプリケーション内のコンシューマ鍵CLIENT_SECRET- 接続アプリケーション内のコンシューマの秘密REDIRECT_URL- 接続アプリケーションで指定したコールバックURLAPI_VERSIOIN- 使用する API バージョン (v38.0 以降)ENV- 使用する環境production,testUSER_ID- ログインユーザ名PASSWORD- ログインパスワード
TOPIC='TestingEvent__c'TOPIC- Platform Events のイベントオブジェクト名(API 名)
- Linux/Mac の場合
./publisher.js [メッセージ [メッセージ [...]]]または
./nforce-publisher.js [メッセージ [メッセージ [...]]]- Windows の場合 (試したことない)
node .¥publisher.js [メッセージ [メッセージ [...]]]
または
node .¥nforce-publisher.js [メッセージ [メッセージ [...]]]いずれの場合も メッセージ の数に制限はありません。省略も可。省略した場合は、イベントは公開しません。
- Linux/Mac の場合
./subscriber.jsまたは
./nforce-subscriber.js- Windows の場合 (試したことない)
node .¥subscriber.js
または
node .¥norce-subscriber.js実行すると待機状態になります。「取引先」のレコードで、新規作成・更新・削除が発生すると、変更データキャプチャが取得した内容が JSON 形式で表示されます。
.
├── README.md このファイル
├── jwt.js 認証・ログイン周りのモジュール
├── nforce.js 認証・ログイン周りのモジュール(nforce用)
├── nforce-publisher.js イベントを公開する (nforce版)
├── nforce-subscriber.js 配信されたイベントを取得する (nforce版)
├── publisher.js イベントを公開する
└── subscriber.js 配信されたイベントを取得する
各プログラムの内容については、プログラム内に説明を記述していますので、そちらを参考になさってください
nforce 版を準備したのは、subscribe 時に jsforce ではエラーを取得する機構が利用できず、自由度の高い nforce版も準備しました。用途に応じて、サンプルを活用ください。いずれの場合も、実行される内容に差異はありません。