OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得
OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得のシーケンスを、Salesforceとservicenowで確認する。
(1)以下のシーケンスで、認可コードを取得する。(クリックで拡大)
(2)上記(1)で取得した認可コードを使って、以下のシーケンスでリフレッシュトークンを取得する。(クリックで拡大)
■その他関連リンク
OAuth2.0 Authorization code flow を使用したリフレッシュトークン取得のシーケンスを、Salesforceとservicenowで確認する。
(1)以下のシーケンスで、認可コードを取得する。(クリックで拡大)
(2)上記(1)で取得した認可コードを使って、以下のシーケンスでリフレッシュトークンを取得する。(クリックで拡大)
■その他関連リンク
OAuth2.0 Authorization code flow を使って リフレッシュトークンを取得する方法。
(1)servicenow 上でエンドポイントを作成
(1.1)自分の servicenow にログイン
(1.2)System OAuth -> Application Registory
(1.3)Newボタンを押す
(1.4)”Create an OAuth API endopint for external clients” を選択
(1.5)以下の例のように指定してエンドポイントを作成
(2)Get Access code
(2.1)ブラウザを起動
(2.2)以下のURLにアクセスする。
https://${YOUR_INSTANCE}.service-now.com/oauth_auth.do?response_type=code&redirect_uri=https%3A%2F%2Flocalhost%2Ftest&client_id=${YOUR_CLIENT_ID}&grant_type=authorization_code&state=123 * redirect_url ... https://localhost/test (上記(1.5)で指定したリダイレクトURL) * state ... 123(適当な文字列)
(2.3)以下のようなログインページが表示されるのでログインする(すでにservicenowにログインしている場合は表示されない)
(2.4)”Allow”ボタンを押す。
(2.5)localhostへのリダイレクトは失敗するが、アドレスバーから認可コードを取得できる。
(2.6)認可コードをメモする。
(3)アクセストークンとリフレッシュトークンを取得する。
(3.1)以下のようなシェルを用意する。
#!/bin/sh MY_INSTANCE="**** YOUR INSTANCE ****" CLIENT_ID="**** YOUR CLIENT ID ****" CLIENT_SECRET="**** YOUR CLIENT SECRET ****" REDIRECT_URI="https%3A%2F%2Flocalhost%2Ftest" # (上記(1.5)で指定したリダイレクトURL) STATE="123" # 上記(2.2)で指定した文字列 CODE=$1 RESULT=`curl -X POST https://${MY_INSTANCE}.service-now.com/oauth_token.do -d "grant_type=authorization_code" -d "code=${CODE}" -d "redirect_uri=${REDIRECT_URI}" -d "client_id=${CLIENT_ID}"\ -d "client_secret=${CLIENT_SECRET}" -d "state=${STATE}"` echo $RESULT
(3.2)上記シェルを、引数に (2.6)でメモした認可コードを指定して実行する。
(3.3)以下のようなjsonを取得できる。その中にリフレッシュトークンが含まれる。
{“access_token”:”***********”,“refresh_token”:”*******”,”scope”:”useraccount”,”token_type”:”Bearer”,”expires_in”:1799}
■リフレッシュトークンを使ってservicenow のREST-APIにアクセスする
以下のリンクを参照。