インストール
- CDN から使用する:
<script src="https://cdn.auth0.com/js/auth0-spa-js/2.0/auth0-spa-js.production.js"></script>。詳細は、FAQを参照してください。 - npm を使用する:
npm install @auth0/auth0-spa-js - yarn を使用する:
yarn add @auth0/auth0-spa-js
はじめに
クライアントを作成する
Auth0Client クライアントオブジェクトの新しいインスタンスを作成する必要があります。アプリケーションをレンダリングまたは初期化する前に、Auth0Client インスタンスを作成してください。これは、async/await または Promise を使用して行えます。作成するクライアントインスタンスは 1 つだけにしてください。
createAuth0Client を使用すると、いくつかの処理が自動的に行われます。
Auth0Clientのインスタンスを作成します。getTokenSilentlyを呼び出して、ユーザーセッションを更新します。getTokenSilentlyから返されるすべてのエラーを抑制します (login_requiredを除く) 。
async/await を使用する
Promiseを使用する
Auth0Client コンストラクターを使って、クライアントを直接作成することもできます。これは、次のような場合に便利です。
- 初期化時の
getTokenSilentlyの呼び出しを省略する。 - 独自のエラー処理を行う。
- SDK を同期的に初期化する。
ログインしてユーザー情報を取得する
<button id="login">Click to Login</button>
作成したボタンでクリックイベントをリッスンします。イベントが発生したら、使用するログイン方法でユーザーを認証します (この例では loginWithRedirect() を使用します) 。ユーザーの認証後、getUser() メソッドを使ってユーザープロファイルを取得できます。
async/await を使用する
Promiseを使用する
API を呼び出す
getTokenSilently メソッドを使用してアクセストークンを取得します。
<button id="callApi">Call an API</button>
async/await を使用する
Promise を使用する
ログアウト
<button id="logout">Logout</button>
ストレージオプションを変更する
cacheLocation プロパティを localstorage に設定すると、トークンをローカルストレージに保存できます。これにより、アクセストークンをより長く保持できるため、Auth0 のへのアクセスを妨げるブラウザーのプライバシー保護機能の影響を一部軽減できます。
ローテーション型のリフレッシュトークンを使用する
useRefreshTokens を true に設定します。
を SPA で使用するには、あらかじめテナントで設定しておく必要があります。
設定すると、SDK は認可ステップで offline_access スコープをリクエストします。さらに、getTokenSilently は /oauth/token エンドポイントを直接呼び出し、リフレッシュトークンをアクセストークンに交換します。
SDK は、リフレッシュトークンの保存時にストレージ設定に従います。SDK がデフォルトのインメモリストレージを使用するように設定されている場合、ページを更新するとリフレッシュトークンは失われます。
使用例
リダイレクトによるログイン
/authorize エンドポイントにリダイレクトし、Universal Login フローを開始します。
ポップアップでログイン
error.popup.close を使用してポップアップを手動で閉じるよう案内します。
options オブジェクトでカスタムの popup オプションを定義します。
リダイレクトコールバックでログインする
handleRedirectCallback を呼び出す必要があります。
ユーザー操作なしでアクセストークンを取得する
prompt=none を使用する方法、またはローテーションされるリフレッシュトークンを使用する方法で、新しいアクセストークンをサイレントに取得できます。リフレッシュトークンは、SDK の設定時に useRefreshTokens を true に設定した場合に使用されます。
リフレッシュトークンを使用せずにアクセストークンをサイレントに取得する方法は、Safari や Brave など、サードパーティ Cookie をブロックするブラウザーでは機能しません。カスタムドメインを使用した回避策の詳細については、Safari 使用時のトークンの更新に関するトラブルシューティング を参照してください。
getTokenSilently() メソッドを使用するには、Dashboard の API Settings で Allow Skipping User Consent を有効にする必要があります。なお、‘localhost’ ではユーザーの同意をスキップできません。
ポップアップでアクセストークンを取得する
getTokenSilently とは異なり、この方法では、サードパーティ Cookie がデフォルトでブロックされているブラウザーでもアクセストークンを取得できます。
別のオーディエンス向けのアクセストークンを取得する
getTokenSilently にオプションを渡すことで、ユーザー認証時に要求したものとは異なる とスコープを持つアクセストークンを取得できます。
これはリフレッシュトークンを使用していない場合 (
useRefreshTokens: false) にのみ機能します。リフレッシュトークンは、ユーザー認証時に要求された特定のオーディエンスとスコープに紐付けられているためです。ユーザーの取得
getUser メソッドを呼び出すと、認証済みユーザーのプロファイルデータを取得できます。
IDトークンのクレームを取得する
getIdTokenClaims メソッドを呼び出すことで取得できます。
ログアウト (デフォルト)
logout メソッドを呼び出して、ログアウトを開始できます。
クライアントIDを指定しないログアウト
logout メソッドを呼び出し、clientId: null を指定すると、 を指定せずにログアウトを開始できます。