FivetranとSalesforceを連携する方法を紹介します。
接続アプリケーションを作成する
アプリケーションマネージャーから新規接続アプリケーションを作成します。
設定ではOAuth設定を有効化しましょう。
その他設定はこちらです。
- コールバックURL:http://localhost:8080/oauth2/callback
- 選択したOAuth範囲
- いつでも要求を実行
- APIを使用してユーザーデータを管理(api)
- PKCF拡張を要求:オフ
コールバックURLにはローカルを指定しました。
このURLにアクセスすることで認証コードを受け取れます。
コールバックURL(リダイレクトURL)の作り方はこちらを確認ください。
リダイレクトURLとは?URLを作成しアクセストークンを受け取る方法を紹介
またOAuth範囲にいつでも要求を実行(refresh_token, offline_access)を含めることでrefresh_tokenが取れます。
Fivetranの連携では必ずrefresh_tokenが必要なのでこの設定は忘れてはいけません。
以上で保存します。
コンシューマーキーと秘密鍵を取得する
コンシューマーの詳細を管理をクリックしシークレット情報を得ます。
シークレット情報は大切に保管しましょう。
OAuth2.0認証をする
認証コードを取得する
認証URLをブラウザで実行します。
https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=YOUR_CONSUMER_KEY&redirect_uri=YOUR_CALLBACK_URL
実行するときは一部の値を変えましょう。
- login.salesforce.com:私のドメインのURL
- client_id:コンシューマー鍵
- redirect_uri:http://localhost:8080/oauth2/callback
するとURLが変わりました。
code以下が認証コードです。
リフレッシュトークンを取得する
続いてリフレッシュトークンを取得しましょう。
# リクエストパラメータ
CLIENT_ID="xxxxxxxxxxxxxxxxx"
CLIENT_SECRET="yyyyyyyyyyyyyyyyyy"
# 認証コード
CODE="zzzzzzzzzzzzzzzzzzzz"
# リダイレクトURI
REDIRECT_URI="http://localhost:8080/oauth2/callback"
# cURLを使用してリクエストの実行
curl -X POST "https://[私のドメイン]の名前.my.salesforce.com/services/oauth2/token" \
-d "grant_type=authorization_code" \
-d "client_id=${CLIENT_ID}" \
-d "client_secret=${CLIENT_SECRET}" \
-d "code=${CODE}" \
-d "redirect_uri=${REDIRECT_URI}" | jq
- client_id:コンシューマー鍵
- client_secret:コンシューマーの秘密
- code:認証コード
それぞれ置き換えましょう。
リフレッシュトークンが取得できていますね!
FivetranとSalesforceの連携
Fivetran APIを使いSalesforce用コネクタを作成します。
# FivetranのAPIキーとシークレットを設定
API_KEY="aaaaaaaaaaaa"
API_SECRET_KEY="bbbbbbbbbbbb"
# APIエンドポイント
URL="https://api.fivetran.com/v1/connectors"
# リクエストボディ
BODY='{
"service": "salesforce",
"group_id": "herring_idealness",
"config": {
"schema": "test"
},
"auth": {
"client_access": {
"client_id": "xxxxxxxxxxxx",
"client_secret": "yyyyyyyyyyyyyy"
},
"refresh_token": "zzzzzzzzzzzzzzz"
}
}'
# APIリクエストの実行
curl -X POST "$URL" \
-u "$API_KEY:$API_SECRET_KEY" \
-H "Content-Type: application/json" \
-d "$BODY" | jq
コネクタを作成できましたね。
Salesforceがトライヤルのためか連携が完了していません。(残念)
本利用している場合は適切な権限があればこの手順で連携が完了すると思います。
{
"title": "Connecting to API",
"status": "FAILED",
"message": "The REST API is not enabled for this Organization."
}
※補足
APIアクセスの制限
Professional Editionでは、デフォルトではAPIアクセスが提供されないか、または非常に限定的です。
トライヤルはProfessional EditionのためAPIが使えないようですね。
まとめ
今回はFivetranとSalesforceのAPI連携について紹介しました。
OAuth認証で詰まった方も多いでしょう。
私もだいぶ苦労したので手順をまとめました。
参考になれば幸いです。