メインコンテンツへスキップ
Lock バージョン 11 未満および Auth0.js バージョン 9 未満では、現在は非推奨となっているレガシー認証フローを使用できました。Auth0 では、古いバージョンの Auth0.js と Lock のコードを、新しい OIDC 準拠 API へ移行することを推奨しています。

トークンを更新する

レガシーアプリケーションでは、refreshToken() 関数を使用して、トークンの有効期限が切れた際に新しいトークンを取得していました (以下に例を示します) 。 auth0.js v9 および Lock 11 では、サイレント認証checkSession() を使用する必要があります (以下に例を示します) 。

API を呼び出す

レガシーアプリケーションでは、API を呼び出すために を使用していました。これは望ましくない方法であり、 のみを使用することをお勧めします。 API を呼び出すには、auth0.js または Lock の初期化時に、API 識別子を audience パラメーターとして指定する必要があります。 を指定すると、OIDC フローが開始され、Auth0 が IDトークン または /userinfo で返すユーザープロフィール データは OIDC 準拠になります。アプリケーションでユーザープロファイル内の非標準の claim を使用している場合は、動作しなくなります。 SPA から API を呼び出す方法について詳しくは、SPA クイックスタートの Calling an API セクションを参照してください。また、バックエンド API の実装もアクセストークンを使用するように移行する必要があります。手順については、API クイックスタートを参照してください。

ユーザープロフィール

IDトークンおよび/userinfoエンドポイントに完全なユーザープロフィールを含められるレガシー認証フローは、非推奨になります。新しいOIDC準拠APIへの移行が完了したら、Legacy User Profileトグルがオフになっていることを確認してください。 レガシー認証フローを使用している場合は、以下の例のように、ユーザープロフィール全体がIDトークンと/userinfoから返されます。 新しいユーザープロフィールはOIDC仕様に準拠しているため、レスポンスでは一部の標準クレームを利用できます。 内容は、どのスコープをリクエストするかによって異なります。アプリケーションで必要なすべてのクレームを利用できるように、Auth0.jsまたはLockの設定時に、リクエストするスコープを調整する必要があります。また、任意のデータ (たとえば、ユーザーメタデータ) を返すためにカスタムクレームを追加することもできます。 完全なユーザープロフィールを取得する別の方法として、次のセクションで説明するように、認証フローを通じてプロフィールを取得する代わりにを使用することもできます。

Management API を使用したユーザープロフィール

レガシーフローでは、Management API は IDトークンによる認証をサポートしていました。この方法は非推奨となっており、現在はアクセストークンを使用して呼び出す必要があります。 アクセストークンを取得するには、https://{yourDomain}/api/v2/ をオーディエンスとして指定して Auth0 に要求する必要があります。Auth0 は現在、認証時に 2 つのオーディエンスを指定することをサポートしていないため、Lock または auth0.js の初期化時には、引き続きアプリケーションの API オーディエンスを使用する必要があります。ユーザーの認証後は、checkSession を使用して Management API の access_token を取得し、続けて getUser() エンドポイントを呼び出すことができます。 次のスコープを要求できます。
  • read:current_user
  • update:current_user_identities
  • create:current_user_metadata
  • update:current_user_metadata
  • delete:current_user_metadata
  • create:current_user_device_credentials
  • delete:current_user_device_credentials
checkSession() の呼び出し時に consent_required エラーが発生する場合があります。その場合は、Management API で Allow Skipping User Consent が有効になっていることと、localhost から実行していないことを確認してください。