🔐auth0-react-native
- プラグイン
- auth0
- ライセンス
- Apache-2.0
- ソース
- GitHub で見る ↗
説明
次のような場合に使用: 素のReact Nativeアプリ(Expoなし)にAuth0のログイン・ログアウト、または生体認証を追加する場合。 `react-native-auth0` をネイティブのディープリンクと統合します。
原文を表示
Use when adding Auth0 login, logout, or biometric auth to a bare React Native app (not Expo). Integrates react-native-auth0 with native deep linking.
ユースケース
- ✓素のReact Nativeアプリにログイン機能を追加するとき
- ✓素のReact Nativeアプリにログアウト機能を追加するとき
- ✓素のReact Nativeアプリに生体認証を追加するとき
- ✓Auth0とネイティブディープリンクを統合するとき
本文(日本語訳)
Auth0 React Native インテグレーション
react-native-auth0 を使用して、React Native および Expo モバイルアプリケーションに認証機能を追加します。
前提条件
- React Native または Expo アプリケーション
- Auth0 アカウント、および Native タイプとして設定済みの Auth0 アプリケーション
- Auth0 をまだセットアップしていない場合は、先に
auth0-quickstartスキルを使用してください
使用しない場合
- Expo マネージドワークフロー — config plugin を使用する Expo アプリには
auth0-expoスキルを使用 - React Web アプリケーション — SPA(Vite/CRA)には
auth0-reactスキルを使用 - React Server Components — Next.js アプリケーションには
auth0-nextjsを使用 - React 以外のネイティブアプリ — プラットフォーム固有の SDK を使用(iOS は Swift、Android は Kotlin)
- バックエンド API — サーバー言語に対応した JWT 検証ライブラリを使用
クイックスタート手順
1. SDK のインストール
Expo:
npx expo install react-native-auth0
React Native CLI:
npm install react-native-auth0
npx pod-install # iOS のみ
2. 環境設定
Auth0 CLI を使った自動セットアップについては、完全なスクリプトを含む セットアップガイド を参照してください。
手動セットアップの場合:
.env を作成します:
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_CLIENT_ID=your-client-id
3. ネイティブプラットフォームの設定
iOS — ios/{YourApp}/Info.plist を更新:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>None</string>
<key>CFBundleURLName</key>
<string>auth0</string>
<key>CFBundleURLSchemes</key>
<array>
<string>$(PRODUCT_BUNDLE_IDENTIFIER).auth0</string>
</array>
</dict>
</array>
Android — android/app/src/main/AndroidManifest.xml を更新:
<activity
android:name="com.auth0.android.provider.RedirectActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="YOUR_AUTH0_DOMAIN"
android:pathPrefix="/android/${applicationId}/callback"
android:scheme="${applicationId}" />
</intent-filter>
</activity>
Expo — app.json を更新:
{
"expo": {
"scheme": "your-app-scheme",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp"
},
"android": {
"package": "com.yourcompany.yourapp"
}
}
}
4. Auth0Provider による認証の追加
アプリ全体を Auth0Provider でラップします:
import React from 'react';
import { Auth0Provider } from 'react-native-auth0';
import App from './App';
export default function Root() {
return (
<Auth0Provider
domain={process.env.AUTH0_DOMAIN}
clientId={process.env.AUTH0_CLIENT_ID}
>
<App />
</Auth0Provider>
);
}
5. useAuth0 フックの使用
import React from 'react';
import { View, Button, Text, ActivityIndicator } from 'react-native';
import { useAuth0 } from 'react-native-auth0';
export default function App() {
const { user, authorize, clearSession, isLoading } = useAuth0();
const login = async () => {
try {
await authorize({
scope: 'openid profile email'
});
} catch (error) {
console.error('Login error:', error);
}
};
const logout = async () => {
try {
await clearSession();
} catch (error) {
console.error('Logout error:', error);
}
};
if (isLoading) {
return <ActivityIndicator />;
}
return (
<View>
{user ? (
<>
<Text>Welcome, {user.name}!</Text>
<Text>{user.email}</Text>
<Button title="Logout" onPress={logout} />
</>
) : (
<Button title="Login" onPress={login} />
)}
</View>
);
}
6. 認証のテスト
Expo:
npx expo start
React Native:
npx react-native run-ios
# または
npx react-native run-android
詳細ドキュメント
- セットアップガイド — 自動セットアップ、ネイティブ設定、ディープリンク
- パターンガイド — セキュアストレージ、生体認証、トークンリフレッシュ
- API リファレンス — SDK の完全な API、メソッド、設定オプション
よくある間違い
| 間違い | 対処法 |
|---|---|
| アプリを Auth0Provider でラップし忘れた | useAuth0() を使用するすべてのコンポーネントは Auth0Provider の子である必要があります |
| ディープリンクの設定を忘れた | iOS の Info.plist および Android の AndroidManifest.xml に URL スキームを追加してください(手順 3 参照) |
| コールバック URL が一致しない | Auth0 ダッシュボードのコールバック URL がアプリの URL スキームと一致していることを確認してください(例: com.yourapp.auth0://YOUR_DOMAIN/ios/com.yourapp/callback) |
| インストール後に iOS ビルドが失敗する | npx pod-install を実行してネイティブ依存関係をリンクしてください |
| Auth0 でアプリが SPA タイプとして作成されている | モバイルアプリには Native アプリケーションタイプである必要があります |
| 認証エラーを処理していない | authorize / clearSession の呼び出しを try-catch ブロックでラップしてください |
| Android でディープリンクが機能しない | RedirectActivity に android:exported="true" が設定されていることを確認してください |
関連スキル
auth0-quickstart— Auth0 の基本セットアップauth0-migration— 別の認証プロバイダーからの移行auth0-mfa— 多要素認証の追加auth0-cli— ターミナルからの Auth0 リソース管理
クイックリファレンス
コアフック API:
useAuth0()— 認証用のメインフックauthorize()— ログインの開始clearSession()— ログアウトuser— ユーザープロフィールオブジェクトgetCredentials()— API 呼び出し用トークンの取得isLoading— ローディング状態
主なユースケース:
- ログイン / ログアウト → 上記の手順 5 を参照
- セキュアなトークンストレージ →
Auth0Providerにより自動処理 - 生体認証 → パターンガイド
- トークンを使った API 呼び出し → パターンガイド
- トークンリフレッシュ →
getCredentials()により自動処理
参考資料
原文(English)を表示
Auth0 React Native Integration
Add authentication to React Native and Expo mobile applications using react-native-auth0.
Prerequisites
- React Native or Expo application
- Auth0 account and application configured as Native type
- If you don't have Auth0 set up yet, use the
auth0-quickstartskill first
When NOT to Use
- Expo managed workflow - Use
auth0-exposkill for Expo apps with config plugin - React web applications - Use
auth0-reactskill for SPAs (Vite/CRA) - React Server Components - Use
auth0-nextjsfor Next.js applications - Non-React native apps - Use platform-specific SDKs (Swift for iOS, Kotlin for Android)
- Backend APIs - Use JWT validation libraries for your server language
Quick Start Workflow
1. Install SDK
Expo:
npx expo install react-native-auth0
React Native CLI:
npm install react-native-auth0
npx pod-install # iOS only
2. Configure Environment
For automated setup with Auth0 CLI, see Setup Guide for complete scripts.
For manual setup:
Create .env:
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_CLIENT_ID=your-client-id
3. Configure Native Platforms
iOS - Update ios/{YourApp}/Info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>None</string>
<key>CFBundleURLName</key>
<string>auth0</string>
<key>CFBundleURLSchemes</key>
<array>
<string>$(PRODUCT_BUNDLE_IDENTIFIER).auth0</string>
</array>
</dict>
</array>
Android - Update android/app/src/main/AndroidManifest.xml:
<activity
android:name="com.auth0.android.provider.RedirectActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="YOUR_AUTH0_DOMAIN"
android:pathPrefix="/android/${applicationId}/callback"
android:scheme="${applicationId}" />
</intent-filter>
</activity>
Expo - Update app.json:
{
"expo": {
"scheme": "your-app-scheme",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp"
},
"android": {
"package": "com.yourcompany.yourapp"
}
}
}
4. Add Authentication with Auth0Provider
Wrap your app with Auth0Provider:
import React from 'react';
import { Auth0Provider } from 'react-native-auth0';
import App from './App';
export default function Root() {
return (
<Auth0Provider
domain={process.env.AUTH0_DOMAIN}
clientId={process.env.AUTH0_CLIENT_ID}
>
<App />
</Auth0Provider>
);
}
5. Use the useAuth0 Hook
import React from 'react';
import { View, Button, Text, ActivityIndicator } from 'react-native';
import { useAuth0 } from 'react-native-auth0';
export default function App() {
const { user, authorize, clearSession, isLoading } = useAuth0();
const login = async () => {
try {
await authorize({
scope: 'openid profile email'
});
} catch (error) {
console.error('Login error:', error);
}
};
const logout = async () => {
try {
await clearSession();
} catch (error) {
console.error('Logout error:', error);
}
};
if (isLoading) {
return <ActivityIndicator />;
}
return (
<View>
{user ? (
<>
<Text>Welcome, {user.name}!</Text>
<Text>{user.email}</Text>
<Button title="Logout" onPress={logout} />
</>
) : (
<Button title="Login" onPress={login} />
)}
</View>
);
}
6. Test Authentication
Expo:
npx expo start
React Native:
npx react-native run-ios
# or
npx react-native run-android
Detailed Documentation
- Setup Guide - Automated setup, native configuration, deep linking
- Patterns Guide - Secure storage, biometric auth, token refresh
- API Reference - Complete SDK API, methods, configuration options
Common Mistakes
| Mistake | Fix |
|---|---|
| Forgot to wrap app with Auth0Provider | All components using useAuth0() must be children of Auth0Provider |
| Forgot to configure deep linking | Add URL scheme to iOS Info.plist and Android AndroidManifest.xml (see Step 3) |
| Callback URL mismatch | Ensure callback URL in Auth0 Dashboard matches your app's URL scheme (e.g., com.yourapp.auth0://YOUR_DOMAIN/ios/com.yourapp/callback) |
| iOS build fails after install | Run npx pod-install to link native dependencies |
| App created as SPA type in Auth0 | Must be Native application type for mobile apps |
| Not handling auth errors | Wrap authorize/clearSession calls in try-catch blocks |
| Deep link not working on Android | Verify android:exported="true" is set on RedirectActivity |
Related Skills
auth0-quickstart- Basic Auth0 setupauth0-migration- Migrate from another auth providerauth0-mfa- Add Multi-Factor Authenticationauth0-cli- Manage Auth0 resources from the terminal
Quick Reference
Core Hook API:
useAuth0()- Main hook for authenticationauthorize()- Initiate loginclearSession()- Logoutuser- User profile objectgetCredentials()- Get tokens for API callsisLoading- Loading state
Common Use Cases:
- Login/Logout → See Step 5 above
- Secure token storage → Automatic with
Auth0Provider - Biometric authentication → Patterns Guide
- API calls with tokens → Patterns Guide
- Token refresh → Automatic with
getCredentials()
References
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。