Intégration Auth0 React Native
Ajoutez l'authentification à des applications mobiles React Native et Expo en utilisant react-native-auth0.
Prérequis
- Application React Native ou Expo
- Compte Auth0 et application configurée comme type Native
- Si vous n'avez pas encore configuré Auth0, utilisez d'abord la skill
auth0-quickstart
Quand ne PAS utiliser
- Expo managed workflow - Utilisez la skill
auth0-expopour les applications Expo avec config plugin - Applications React web - Utilisez la skill
auth0-reactpour les SPAs (Vite/CRA) - React Server Components - Utilisez
auth0-nextjspour les applications Next.js - Applications non-React native - Utilisez les SDKs spécifiques à la plateforme (Swift pour iOS, Kotlin pour Android)
- APIs Backend - Utilisez les bibliothèques de validation JWT pour votre langage serveur
Flux de démarrage rapide
1. Installer le SDK
Expo:
npx expo install react-native-auth0
React Native CLI:
npm install react-native-auth0
npx pod-install # iOS uniquement
2. Configurer l'environnement
Pour une configuration automatisée avec Auth0 CLI, consultez le Setup Guide pour les scripts complets.
Pour une configuration manuelle:
Créez .env:
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_CLIENT_ID=your-client-id
3. Configurer les plateformes natives
iOS - Mettez à jour 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 - Mettez à jour 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 - Mettez à jour app.json:
{
"expo": {
"scheme": "your-app-scheme",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp"
},
"android": {
"package": "com.yourcompany.yourapp"
}
}
}
4. Ajouter l'authentification avec Auth0Provider
Encapsulez votre application avec 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. Utiliser le hook 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. Tester l'authentification
Expo:
npx expo start
React Native:
npx react-native run-ios
# ou
npx react-native run-android
Documentation détaillée
- Setup Guide - Configuration automatisée, configuration native, deep linking
- Patterns Guide - Stockage sécurisé, authentification biométrique, actualisation des jetons
- API Reference - API SDK complète, méthodes, options de configuration
Erreurs courantes
| Erreur | Solution |
|---|---|
| Oubli d'encapsuler l'application avec Auth0Provider | Tous les composants utilisant useAuth0() doivent être des enfants d'Auth0Provider |
| Oubli de configurer le deep linking | Ajoutez le schéma URL à iOS Info.plist et Android AndroidManifest.xml (voir Étape 3) |
| Discordance d'URL de callback | Assurez-vous que l'URL de callback dans le tableau de bord Auth0 correspond au schéma URL de votre application (par ex. com.yourapp.auth0://YOUR_DOMAIN/ios/com.yourapp/callback) |
| Échec de la compilation iOS après l'installation | Exécutez npx pod-install pour lier les dépendances natives |
| Application créée comme type SPA dans Auth0 | Doit être de type application Native pour les applications mobiles |
| Pas de gestion des erreurs d'authentification | Encapsulez les appels authorize/clearSession dans des blocs try-catch |
| Deep link ne fonctionne pas sur Android | Vérifiez que android:exported="true" est défini sur RedirectActivity |
Skills connexes
auth0-quickstart- Configuration de base d'Auth0auth0-migration- Migrer depuis un autre fournisseur d'authentificationauth0-mfa- Ajouter l'authentification multifacteur
Référence rapide
API du hook principal:
useAuth0()- Hook principal pour l'authentificationauthorize()- Initier la connexionclearSession()- Déconnexionuser- Objet profil utilisateurgetCredentials()- Obtenir les jetons pour les appels APIisLoading- État de chargement
Cas d'usage courants:
- Connexion/Déconnexion → Voir Étape 5 ci-dessus
- Stockage sécurisé des jetons → Automatique avec
Auth0Provider - Authentification biométrique → Patterns Guide
- Appels API avec jetons → Patterns Guide
- Actualisation des jetons → Automatique avec
getCredentials()