インストール
- 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() メソッドを使用するには、Auth0 Dashboard の API 設定で Allow Skipping User Consent を有効にしておく必要があります。さらに、‘localhost’ ではユーザーの同意を省略できません。
ポップアップでアクセストークンを取得する
getTokenSilently とは異なり、この方法であれば、サードパーティ Cookie がデフォルトでブロックされているブラウザーでもアクセストークンを取得できます。
別の audience 向けのアクセストークンを取得する
getTokenSilently にオプションを渡すと、ユーザーの認証時にリクエストしたものとは異なる と scope を持つアクセストークンを取得できます。
これは、リフレッシュトークンを使用していない場合 (
useRefreshTokens: false) にのみ機能します。リフレッシュトークンは、ユーザーの認証時にリクエストした特定の audience と scope に紐づいているためです。ユーザー情報の取得
getUser メソッドを呼び出すと、認証済みユーザーのプロファイルデータを取得できます。
ID トークンのクレームを取得する
getIdTokenClaims メソッドを呼び出すと、認証済みユーザーののクレームを取得できます。
ログアウト (デフォルト)
logout メソッドを呼び出すことで、ログアウトを開始できます。
Client ID を指定しないログアウト
logout メソッドを呼び出して clientId: null を指定すると、 を指定せずにログアウトアクションを開始できます。