hide's memo
9 4月, 2023

OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得

[English]

OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得のシーケンスを、Salesforceとservicenowで確認する。

(1)以下のシーケンスで、認可コードを取得する。(クリックで拡大)

 

(2)上記(1)で取得した認可コードを使って、以下のシーケンスでリフレッシュトークンを取得する。(クリックで拡大)

■その他関連リンク

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

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

 

7 4月, 2022

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が取得しようとしたリフレッシュトークンとなる。

5 3月, 2022

REST-APIでデータを取得(SELECT文使用) Salesforce

[English]

SalesforceからREST-APIでデータ取得するサンプル

Userオブジェクトから、最終更新日が 2022/3/5 15:03:00(JST)以降のデータのNameを取得する例。

以下の例の中の$ACCESSはアクセストークン。この取得方法は “Salseforceのデータをcurlで取得” を参照。

DATE="2020-03-05T15%3A03%3A00%2B09%3A00"
curl -H "Authorization: Bearer $ACCESS" "https://$SERVER/services/data/v50.0/query/?q=SELECT+Name+from+User+where+LastModifiedDate%3E$DATE"

Name,Fax,Division,SIgnatureを取得する。

DATE="2020-03-05T15%3A03%3A00%2B09%3A00"
curl -H "Authorization: Bearer $ACCESS" "https://$SERVER/services/data/v50.0/query/?q=SELECT+NAME%2CFax%2CDivision%2CSignature+from+User+where+LastModifiedDate%3E$DATE"
13 2月, 2022

Salseforceのデータをcurlで取得

[English]

1.Using refreshtoken

#!/bin/sh

MY_INSTANCE="miura2-dev-ed"
CLIENT_ID="*** your client id ***"
CLIENT_SECRET="*** your client secret ***"
REFRESH_TOKEN="*** your refresh token ***"

#----------------------------------------------
# Get Access token from Refresh token.
#----------------------------------------------
RESULT=`curl -X POST https://$MY_INSTANCE.my.salesforce.com/services/oauth2/token -d "grant_type=refresh_token" -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "refresh_token=$REFRESH_TOKEN"`

ACCESS=`echo $RESULT | awk 'BEGIN{FS="access_token\":"}{print $2}' |awk 'BEGIN{FS=","}{print $1}' | sed -s 's/\"//g'`

#----------------------------------------------
#Get data using Access token
#----------------------------------------------
curl -s https://$MY_INSTANCE.my.salesforce.com/services/data/v52.0/sobjects/Account -H "Authorization: Bearer $ACCESS" -H "Content-type: application/json"

 

リフレッシュトークン自体を取得するには、Salesforceでリフレッシュトークを取得する を参照のこと。