ブラウザとREST Client(Postman)を使って、Salesforce APIのOAuth 2.0 Web サーバフローを説明。
Salesforce側に接続アプリケーションを作成コンシューマ鍵(client_id)とコンシューマの秘密(client_secret)を使って認証(アクセストークンとリフレッシュトークンを取得)Salesforceでこの処理を更新トークン取得と呼ぶ)OAuth 範囲は以下2つあればよい(フルアクセスは必要ないはず)
データへのアクセスと管理(api)ユーザーに代わっていつでも要求を実行(refresh_token, offline_access)図:アプリケーションマネージャー>編集> 接続アプリケーションを管理
有効期限のないリフレッシュトークンをAPIで使用するには、以下を設定する。
アプリケーションマネージャー>編集>選択した OAuth 範囲>ユーザーに代わっていつでも要求を実行(refresh_token, offline_access)を選択接続アプリケーション>接続アプリケーションを管理する>編集>更新トークンポリシーで更新トークンは取り消されるまで有効を選択アクセストークンの有効期限は以下順序で決定される。
接続アプリケーション>接続アプリケーションを管理する>編集>セッションポリシーのタイムアウト値プロファイルのセッションタイムアウトの開始条件の値図:接続アプリケーション>接続アプリケーションを管理する>編集
図:ユーザープロファイル
GETresponse_type:codeclient_id:接続アプリケーション > プリケーションマネージャー > 参照 > 接続アプリケーションを管理する > コンシューマ鍵[^1]redirect_uri:接続アプリケーション > プリケーションマネージャー > 参照 > 接続アプリケーションを管理する > コールバック URリクエスト例(ブラウザでアクセス):
https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id={{cliend_id}}&redirect_uri=http://localhost:8888
Salesforce認可画面に遷移 redirect_uriに認証コードが付与されてリダイレクトリダイレクト例:
https://locahost:8000?code=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
grant_type:authorization_codeclient_secret:アプリケーション > プリケーションマネージャー > 参照 > 接続アプリケーションを管理する > コンシューマの秘密[^1]client_id:接続アプリケーション > プリケーションマネージャー > 参照 > 接続アプリケーションを管理する > コンシューマ鍵[^1]redirect_uri:接続アプリケーション定義 > コールバック URLcode:2. 認証コードを取得で取得したコード認証コードは、パーセントエンコードされているのでデコードする(例:PHP urldecode())レスポンス:
{
"access_token": "0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"refresh_token": "5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"signature": "Cxxxxxxxxxxxxxxxxxxxxxxxx",
"scope": "refresh_token visualforce wave_api custom_permissions web openid chatter_api id api eclair_api full",
...
}

[^1]: 鍵などの情報は、アプリケーションマネージャーから参照しないと表示されない。アプリケーション > 接続アプリケーション > 接続アプリケーションの管理では、鍵情報などは表示されない。
ref. 更新セッションの OAuth 2.0 更新トークンフロー