Salesforceでリフレッシュトークを取得する

[English]

Salefoorceで、365日に設定したリフレッシュトークンを取得する例

(1)Salesforceにログイン

(2)Classc UIに変更(Lightningでも可能と思われるがわからないので)

(3)「設定」→画面左ペインで「ビルド-作成-アプリケーション」→右ペインで接続アプリケーションの「新規」を押す

(4)以下の画面の例のように設定する。

(4.1)接続アプリケーション名は “abc”

(4.2)API参照名は”abc”

(4.3)取引責任者は自分のメールアドレス

(4.4)OAuth設定の有効化にチェック

(4.5)選択したOAuthの範囲:テスト時はフルアクセス+いつでも要求を実行(refresh_token…)
注意!! これはサンプルです。実際に利用する際は権限の範囲は検討してください。

(4.6)WEBサーバフローの秘密が必要にチェック

(4.7)開始URLに、自分のSalesforceのURL

以上で保存し、以下の画面の「コンシューマ鍵」「コンシューマの秘密」をコピーする

(5)設定→画面左ペインの「アプリケーションを管理する – 接続アプリケーション」で”abc”を選択

(5.1)ポリシーを編集ボタンを押す

(5.2)更新トークンポリシーで「次の時間が経過したら更新トークンを有効期限切れにする」を365日を設定する。

 

(6)Salesforceにアクセスしているブラウザ(セッションがあるブラウザ)で以下のURLを入力

https://****.my.salesforce.com/services/oauth2/authorize?response_type=code&client_id=****&redirect_uri=http%3A%2F%2Flocalhost

サーバ名は自分のSalesforceのサーバ

client_idは自分のクライアントID(コンシューマ鍵)

(6.1)以下のように確認画面がでるので「許可」を押す。

 

(7)以下のようにリダイレクトされるので、code=****の部分を保存

http://localhost/?code=*****

 

(8)以下のシェルを書いて実行する。

#!/bin/sh
CLIENT_ID="コンシューマ鍵"
CLIENT_SECRET="コンシューマの秘密"
SERVER="自サーバ.my.salesforce.com"
CODE="上記 (7)で取得したコード"

#GET REFRESH TOKEN
curl -X POST https://$SERVER/services/oauth2/token -d "grant_type=authorization_code" -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "code=$CODE" -d "redirect_uri=http%3A%2F%2Flocalhost"

上記シェルを実行すると以下の結果が取得できる。

{"access_token":"***","refresh_token":"***","signature":"****","scope":"refresh_token full","id_token":"","instance_url":"https://***.my.salesforce.com","id":"https://login.salesforce.com/id/******","token_type":"Bearer","issued_at":"*****"}

 

上記jsonの、refresh_tokenが取得しようとしたリフレッシュトークンとなる。