auth0-react
ReactアプリケーションにAuth0認証を追加する際に使用します。ログイン・ログアウト・ユーザーセッション・保護されたルートの実装をサポートし、ViteまたはCreate React AppベースのSPAに`@auth0/auth0-react` SDKを統合します。
description の原文を見る
Use when adding authentication to React applications (login, logout, user sessions, protected routes) - integrates @auth0/auth0-react SDK for SPAs with Vite or Create React App
SKILL.md 本文
Auth0 React 連携
@auth0/auth0-react を使用して React シングルページアプリケーションに認証を追加します。
前提条件
- React 16.11+ アプリケーション (Vite または Create React App) - React 16、17、18、19 をサポート
- Auth0 アカウントと設定済みのアプリケーション
- Auth0 をまだセットアップしていない場合は、まず
auth0-quickstartスキルを使用してください
使用しない場合
- Next.js アプリケーション - App Router と Pages Router の両方に
auth0-nextjsスキルを使用 - React Native モバイルアプリ - iOS/Android に
auth0-react-nativeスキルを使用 - サーバーサイドレンダリング React - フレームワーク固有の SDK (Next.js、Remix など) を使用
- 埋め込みログイン - このSDK は Auth0 Universal Login (リダイレクトベース) を使用
- バックエンド API 認証 - express-openid-connect または JWT 検証を使用
クイックスタートワークフロー
1. SDK をインストール
npm install @auth0/auth0-react
2. 環境を設定
Auth0 CLI を使った自動セットアップの場合、セットアップガイドで完全なスクリプトを確認してください。
手動セットアップの場合:
.env ファイルを作成:
Vite:
VITE_AUTH0_DOMAIN=your-tenant.auth0.com
VITE_AUTH0_CLIENT_ID=your-client-id
Create React App:
REACT_APP_AUTH0_DOMAIN=your-tenant.auth0.com
REACT_APP_AUTH0_CLIENT_ID=your-client-id
3. Auth0Provider でアプリをラップ
src/main.tsx (Vite) または src/index.tsx (CRA) を更新:
import React from 'react';
import ReactDOM from 'react-dom/client';
import { Auth0Provider } from '@auth0/auth0-react';
import App from './App';
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<Auth0Provider
domain={import.meta.env.VITE_AUTH0_DOMAIN} // or process.env.REACT_APP_AUTH0_DOMAIN
clientId={import.meta.env.VITE_AUTH0_CLIENT_ID}
authorizationParams={{
redirect_uri: window.location.origin
}}
>
<App />
</Auth0Provider>
</React.StrictMode>
);
4. 認証 UI を追加
import { useAuth0 } from '@auth0/auth0-react';
export function LoginButton() {
const { loginWithRedirect, logout, isAuthenticated, user, isLoading } = useAuth0();
if (isLoading) return <div>Loading...</div>;
if (isAuthenticated) {
return (
<div>
<span>Welcome, {user?.name}</span>
<button onClick={() => logout({ logoutParams: { returnTo: window.location.origin } })}>
Logout
</button>
</div>
);
}
return <button onClick={() => loginWithRedirect()}>Login</button>;
}
5. 認証をテスト
開発サーバーを起動してログインフローをテストします:
npm run dev # Vite
# or
npm start # CRA
詳細ドキュメント
セットアップガイド- 自動セットアップスクリプト (Bash/PowerShell)、CLI コマンド、手動設定統合ガイド- 保護されたルート、API 呼び出し、エラーハンドリング、高度なパターンAPI リファレンス- 完全な SDK API、設定オプション、フック リファレンス、テスト戦略
よくある間違い
| 間違い | 解決策 |
|---|---|
| Auth0 ダッシュボードにリダイレクト URI を追加し忘れた | Auth0 ダッシュボードの許可されるコールバック URL に、アプリケーション URL (例: http://localhost:3000、https://app.example.com) を追加 |
| 間違った環境変数プレフィックスを使用 | Vite は VITE_ プレフィックスを使用、Create React App は REACT_APP_ プレフィックスを使用 |
| ローディング状態を処理していない | 認証に依存する UI をレンダリングする前に、常に isLoading を確認 |
| トークンを localStorage に保存している | トークンを手動で保存しない - SDK が自動的に安全に保存 |
| Auth0Provider ラッパーがない | アプリ全体を <Auth0Provider> でラップする必要がある |
| Provider がルートレベルにない | Auth0Provider は認証フックを使用するすべてのコンポーネントをラップする必要がある |
| 環境変数の import パスが間違っている | Vite は import.meta.env.VITE_* を使用、CRA は process.env.REACT_APP_* を使用 |
in-app MFA に acr_values リダイレクトを使用している | in-app の登録/チャレンジ/検証フローには useAuth0().mfa API を使用 |
MfaRequiredError をキャッチしていない | getAccessTokenSilently を try/catch でラップし、instanceof MfaRequiredError をチェック |
| MFA エンドポイントへの直接 HTTP 呼び出しを行っている | useAuth0() の mfa プロパティを使用 - トークン管理を自動的に処理 |
| ステップアップ MFA のリフレッシュトークンを忘れている | interactiveErrorHandler="popup" を使用する場合、Auth0Provider に useRefreshTokens={true} を設定 |
関連スキル
auth0-quickstart- 基本的な Auth0 セットアップauth0-migration- 別の認証プロバイダから移行auth0-mfa- 多要素認証を追加auth0-cli- ターミナルから Auth0 リソースを管理
クイックリファレンス
コアフック:
useAuth0()- メイン認証フックisAuthenticated- ユーザーがログインしているかどうかを確認user- ユーザープロフィール情報loginWithRedirect()- ログインを開始logout()- ユーザーをログアウトgetAccessTokenSilently()- API 呼び出し用のアクセストークンを取得mfa- 登録、チャレンジ、検証用の MFA API クライアントmfa.getAuthenticators(mfaToken)- 登録済みの認証器をリストmfa.getEnrollmentFactors(mfaToken)- 利用可能な登録要因を取得mfa.enroll(params)- 新しい認証器を登録 (OTP、SMS、Email、Voice、Push)mfa.challenge(params)- MFA チャレンジを開始mfa.verify(params)- MFA チャレンジを検証して認証を完了
MFA エラータイプ (@auth0/auth0-react からインポート):
MfaRequiredError-getAccessTokenSilentlyで MFA が必要な場合にスロー (mfa_tokenとmfa_requirementsを含む)MfaEnrollmentError、MfaChallengeError、MfaVerifyError- それぞれのmfa.*メソッドによってスロー
よく使用されるユースケース:
- ログイン/ログアウトボタン → 上記のステップ 4 を参照
- 保護されたルート →
統合ガイド - トークンを使用した API 呼び出し →
統合ガイド - エラーハンドリング →
統合ガイド - MFA ハンドリング →
統合ガイド
参考資料
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- auth0
- リポジトリ
- auth0/agent-skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/auth0/agent-skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。