メインコンテンツへスキップ
リフレッシュトークンを取得するには、/authorizeエンドポイントを通じて認証要求を開始する際に、offline_accessスコープを含める必要があります。必ずAPIでオフラインアクセスを開始してください。詳細については、「API設定」をお読みください。 たとえば、認可コードフローを使用している場合、認証要求は以下のようになります。
https://{yourDomain}/authorize?
    audience={API_AUDIENCE}&
    scope=offline_access&
    response_type=code&
    client_id={yourClientId}&
    redirect_uri={https://yourApp/callback}&
    state={OPAQUE_VALUE}
リフレッシュトークはセッションに保存されます。その後、セッションを更新する必要があるとき(たとえば、事前設定された時間枠が過ぎた場合や、ユーザーが機密操作を試みた場合)、アプリはバックエンドでリフレッシュトークンを使用して、新しいIDトークンを取得します。この際、/oauth/tokenエンドポイントをgrant_type=refresh_tokenで使用します。 ユーザー認証が成功すると、アプリケーションはredirect_uriにリダイレクトされ、URLの一部としてcodeが付加されます({https://yourApp/callback}?code=BPPLN3Z4qCTvSNOy)。/oauth/tokenエンドポイントを使用して、このコードをアクセストークンと交換できます。
curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=authorization_code \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'code={yourAuthorizationCode}' \
  --data 'redirect_uri={https://yourApp/callback}'
応答には、アクセストークンとリフレッシュトークンが含まれているはずです。
{
      "access_token": "eyJz93a...k4laUWw",
      "refresh_token": "GEbRxBN...edjnXbL",
      "token_type": "Bearer"
    }
対応するネイティブクライアント(パブリック)を使用してモバイルアプリのリフレッシュトークンを要求する場合、要求時にclient_secretを送信する必要はありません。これは、機密性の高いアプリケーションのみで必要とされるものです。 リフレッシュトークンは、ユーザーが実質的に永久に認証された状態でいることを可能にするため、アプリケーションが安全に保管しなければなりません。 認可コードフローを使用してこれを実装する方法の詳細については、「認可コードフローを使用してAPIを呼び出す」のチュートリアルを参照してください。その他の付与については、「認証フローと認可フロー」を参照してください。

もっと詳しく

I