OAuth 更新トークンプロセスについて
Web サーバ OAuth 認証フローとユーザエージェントフローはどちらも、新しいアクセストークンの取得に使用可能な更新トークンを提供します。
アクセストークンは、Salesforce のセッションタイムアウトで指定された有効期間に制限されています。アプリケーションが有効期限の切れたアクセストークンを使用すると、「Session expired or invalid」エラーが返されます。アプリケーションが Web サーバまたはユーザエージェント OAuth 認証フローを使用している場合、認証中に更新トークンが提供されます。この更新トークンを使用して、新しいアクセストークンを取得します。
更新トークン要求
クライアントアプリケーションが新しいアクセストークンを取得するには、次の要求パラメータを指定して POST 要求をトークン要求エンドポイントに送信します。
| パラメータ | 説明 |
|---|---|
| grant_type | 値は refresh_token である必要があります。 |
| refresh_token | クライアントアプリケーションがすでに受け取っている更新トークン。 |
| client_id | 接続アプリケーション定義の [コンシューマ鍵]。 |
| client_secret | 接続アプリケーション定義の [コンシューマの秘密]。[Web サーバフローの秘密が必要] 設定が接続アプリケーション定義で有効になっていない場合を除き、必須です。このパラメータは省略可能です。 |
| format | 期待される戻り形式。デフォルトは、json です。値は次のとおりです。
|
次の例は、本文でクライアント ID とクライアントの秘密を送信する更新トークン POST 要求を示します。
1POST /services/oauth2/token HTTP/1.1
2Host: https://login.salesforce.com/
3grant_type=refresh_token&client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0
4QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=1955279925675241571
5&refresh_token=your token herePOST 要求の本文でクライアントのログイン情報をパラメータとして送信する代わりに、Salesforce では HTTP 基本認証スキームがサポートされています。このスキーマでは、次のように要求の認証ヘッダーに client_id と client_secret が必要です。
Authorization: Basic64Encode(client_id:secret)
client_id と client_secret はコロン (:) で区切ります。詳細は、「OAuth 2.0 認証フレームワーク」を参照してください。
次の例は、(POST 要求の本文でクライアントのログイン情報を送信する代わりに) HTTP 基本認証スキームを使用する更新トークン POST 要求を示します。
1POST /services/oath2/token HTTP/1.1
2Host: login.salesforce.com
3Authorization: Basic M01WRzlJdTY2RktlSGhJTXFxSHNrdVQ2S1JwdnliQTN
4wZnFFbWpVeklmUkVhdmEyMk1hdVliVzU5SU1IcHRJUm9rZmVXdGtwOUJnR24yOVh
5jT3hXaTozNDY5MzIyMjcwMjQzMjcwNjk0
6
7grant_type=refresh_token&refresh_token=your token hereSalesforce の応答
Salesforce は、更新トークン要求を検証した後、次のレスポンスボディパラメータを使用してアプリケーションに応答を送信します。
次の例は、JSON レスポンスボディを示しています。
| パラメータ | 説明 |
|---|---|
| access_token | アプリケーションが要求を行うために使用するセッション ID として機能するアクセストークン。このトークンは、ユーザログイン情報と同様に保護する必要があります。 |
| instance_url | API コールの送信先となる Salesforce インスタンスを示します。 |
| id | ユーザを識別し、ユーザの詳細を照会するために使用できる ID URL。エンドユーザに関する詳細な情報を取得するための HTTP 要求で使用できます。 |
| issued_at | 署名が作成された日時。UNIX エポック (1970 年 1 月 1 日 00:00:00 UTC) からの秒数として表されます。 |
| signature | 連結 ID と issued_at 値を含む client_secret (非公開鍵) で署名されている Base64 符号化された HMAC-SHA256 署名。signature を使用して、ID URL がサーバから送信されたときに変更されなかったことを確認します。 |
1{ "id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
2"issued_at":"1278448384422","instance_url":"https://yourInstance.salesforce.com/",
3"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
4"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7T
5rqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4"}考慮事項