Google 致力于为黑人社区推动种族平等。查看具体举措

Connectez votre application à l'émulateur d'authentification

Avant d' utiliser l'émulateur d' authentification avec vous application, assurez - vous que vous comprenez le flux de travail global Firebase Emulator local Suite , et que vous installez et configurez l'émulateur local Suite et de revoir les commandes CLI .

Que puis-je faire avec l'émulateur d'authentification ?

L'émulateur d' authentification fournit une émulation locale haute fidélité des services d' authentification Firebase, fournissant une grande partie de la fonctionnalité trouvée dans la production Firebase d' authentification . Associé aux SDK iOS, Android et Web Firebase, l'émulateur vous permet de :

  • Créer, mettre à jour et gérer des comptes d'utilisateurs émulés pour tester l'e-mail/le mot de passe, le numéro de téléphone/SMS et la connexion avec des fournisseurs d'identité tiers (tels que Google)
  • Afficher et modifier les utilisateurs émulés
  • Vérifiez les messages liés à l'authentification dans l'onglet Journaux de l'interface utilisateur de l'émulateur.

Choisissez un projet Firebase

Firebase Local Emulator Suite émule des produits pour un seul projet Firebase.

Pour sélectionner le projet à l' utilisation, avant de commencer les émulateurs, dans la course CLI firebase use dans votre répertoire de travail. Ou bien , vous pouvez passer le --project drapeau à chaque commande de l' émulateur.

Emulator locale Suite supporte l' émulation de véritables projets de démonstration et Firebase projets.

Type de projet Caractéristiques Utilisation avec des émulateurs
Réel Un vrai projet est celui que vous avez configuré et activé dans la console Firebase ; un projet réel a des ressources actives, telles que des bases de données, des compartiments de stockage, des fonctions ou toute autre ressource que vous avez configurée pour ce projet. Lorsque vous travaillez avec de vrais projets, vous pouvez exécuter des émulateurs pour tout ou partie des produits pris en charge dans votre projet.

Pour tous les produits que vous n'êtes pas émulez, vos applications et le code vont interagir avec la base de données en direct, seau de stockage, fonction, etc.
Démo Un projet de démonstration n'a pas de configuration de console Firebase et pas de ressources en direct.

Démo ID de projet ont le demo- préfixe.
Lorsque vous travaillez avec des projets de démonstration, vos applications et votre code interagissent uniquement avec les émulateurs. Si votre application interagit avec une ressource pour laquelle aucun émulateur n'est en cours d'exécution, ce code échouera.

Nous vous recommandons d'utiliser des projets de démonstration dans la mesure du possible. Les avantages comprennent :

  • Configuration plus facile, car vous pouvez exécuter les émulateurs sans jamais créer de projet Firebase
  • Sécurité renforcée, car si votre code invoque accidentellement des ressources (de production) non émulées, il n'y a aucune chance de modification, d'utilisation et de facturation des données
  • Meilleure prise en charge hors ligne, car il n'est pas nécessaire d'accéder à Internet pour télécharger votre configuration SDK.

Instrumentez votre application pour parler à l'émulateur d'authentification

SDK Android, iOS et Web

Configurez votre configuration in-app ou vos classes de test pour interagir avec l'émulateur d'authentification comme suit.

Android
FirebaseAuth.getInstance().useEmulator('10.0.2.2', 9099);
iOS - Swift
Auth.auth().useEmulator(withHost:"localhost", port:9099)

Web v8

var auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

Web v9

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://localhost:9099");

Aucune configuration supplémentaire n'est nécessaire pour prototyper et tester les interactions entre l'authentification et les fonctions Cloud ou les règles de sécurité Firebase pour Cloud Firestore ou Realtime Database. Lorsque l'émulateur d'authentification est configuré et que d'autres émulateurs sont en cours d'exécution, ils fonctionnent automatiquement ensemble.

SDK administrateur

Le SDK Firebase Administrateur se connecte automatiquement à l'émulateur d' authentification lorsque la FIREBASE_AUTH_EMULATOR_HOST variable d'environnement est définie.

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

Notez que l'émulateur Cloud Functions connaît automatiquement l'émulateur d'authentification, vous pouvez donc ignorer cette étape lorsque vous testez les intégrations entre les émulateurs Cloud Functions et Authentication. La variable d'environnement sera automatiquement définie pour le SDK Admin dans Cloud Functions.

Avec l'ensemble variable d'environnement, Firebase Administrateur SDKs accepte les cookies non signés ID de session et Tokens émis par l'émulateur d' authentification (via verifyIdToken et createSessionCookie méthodes respectivement) pour faciliter Developmemt locaux et les tests. S'il vous plaît assurez - vous de ne pas définir la variable d'environnement dans la production.

Lors de la connexion à l'émulateur d'authentification, vous devrez spécifier un ID de projet. Vous pouvez passer un ID de projet initializeApp directement ou définir la GCLOUD_PROJECT variable d'environnement. Notez que vous n'avez pas besoin d'utiliser votre véritable ID de projet Firebase ; l'émulateur d'authentification acceptera tout ID de projet.

SDK d'administration Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variable d'environnement
export GCLOUD_PROJECT="your-project-id"

Jetons d'identification

Pour des raisons de sécurité, les problèmes d' authentification émulateur non signés jetons d'identité, qui ne sont acceptées que par d' autres émulateurs Firebase, ou le Firebase Administrateur SDK lorsque configurés . Ces jetons seront rejetés par les services Firebase de production ou par le SDK Firebase Admin exécuté en mode production (par exemple, le comportement par défaut sans les étapes de configuration décrites ci-dessus).

Pour commencer le prototypage interactif avec l'émulateur d'authentification et l'interface utilisateur Emulator Suite, démarrez Firebase Local Emulator Suite.

firebase emulators:start

Pour l' authentification anonyme, votre application peut exercer le signe dans la logique de votre plate - forme ( iOS , Android , Web ).

Pour l' authentification email / mot de passe, vous pouvez commencer le prototypage en ajoutant des comptes d'utilisateurs à l'émulateur d' authentification à partir de votre application à l' aide des méthodes d' authentification SDK, ou en utilisant l'émulateur Suite UI.

  1. Dans l'interface utilisateur Suite Emulator, cliquez sur l'onglet Authentification.
  2. Cliquez sur le bouton Ajouter un utilisateur.
  3. Suivez l'assistant de création de compte utilisateur, en remplissant les champs d'authentification par e-mail.

Avec un utilisateur test créé, votre application peut signer l'utilisateur et avec la logique SDK pour votre plate - forme ( iOS , Android , Web ).

Pour tester la vérification e - mail / connexion avec flux lien e - mail, l'émulateur imprime une URL vers le terminal où firebase emulators:start a été exécuté.

i  To verify the email address customer@ex.com, follow this link:
http://localhost:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key

Collez le lien dans votre navigateur pour simuler l'événement de vérification et vérifiez si la vérification a réussi.

{
  "authEmulator": {
    "success": "The email has been successfully verified.",
    "email": "customer@example.com"
  }
}

Pour tester les réinitialisations de mot de passe, l'émulateur affiche une URL similaire, y compris un paramètre newPassword (que vous pouvez changer au besoin), au terminal.

http://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

Tests non interactifs

Au lieu d'utiliser l'interface utilisateur Emulator Suite ou le code client pour gérer les comptes d'utilisateurs de messagerie/mot de passe, vous pouvez écrire des scripts de configuration de test qui appellent des API REST pour créer et supprimer des comptes d'utilisateurs et récupérer des codes de vérification de courrier électronique hors bande pour remplir la vérification de courrier électronique de l'émulateur. URL. Cela permet de séparer la plate-forme et le code de test et vous permet de tester de manière non interactive.

Pour les flux de test de courrier électronique et de mot de passe non interactifs, la séquence typique est la suivante.

  1. Créer des utilisateurs avec l'authentification point de terminaison REST Rejoins -nous .
  2. Connectez les utilisateurs à l'aide des e-mails et des mots de passe pour effectuer des tests.
  3. Le cas échéant à vos tests, chercher disponibles hors-bande des codes de vérification électronique du REST spécifique à l' émulateur endpont .
  4. Dossiers flush utilisateur avec le point de terminaison REST spécifique à l' émulateur pour les données de compensation.

Authentification émulée par téléphone/SMS

Pour l'authentification par téléphone, l'émulateur Auth ne prend pas en charge :

  • flux reCAPTCHA et APN. Une fois configuré pour interagir avec l'émulateur, SDK client de désactiver ces méthodes de vérification d'une manière similaire à celle décrite pour le test d'intégration ( iOS , les applications , web ).
  • Testez les numéros de téléphone avec des codes préconfigurés dans la console Firebase.

Dans le cas contraire, en termes de code client, le flux d'authentification téléphonique / SMS est identique à celui décrit pour la production ( iOS , Android , Web ).

Utilisation de l'interface utilisateur de la suite d'émulateurs :

  1. Dans l'interface utilisateur Suite Emulator, cliquez sur l'onglet Authentification.
  2. Cliquez sur le bouton Ajouter un utilisateur.
  3. Suivez l'assistant de création de compte utilisateur en remplissant les champs d'authentification du téléphone.

Cependant, pour les flux d'authentification téléphonique, l'émulateur ne déclenchera PAS la livraison de messages texte, car contacter un opérateur est hors de portée et non convivial pour les tests locaux ! Au lieu de cela, les impressions de l' émulateur le code qui aurait été envoyé par SMS à la même borne à laquelle vous avez exécuté firebase emulators:start ; entrez ce code dans l'application pour simuler les utilisateurs en train de vérifier leurs messages texte.

Tests non interactifs

Pour les tests d'authentification téléphonique non interactifs, utilisez l'API REST de l'émulateur d'authentification pour récupérer les codes SMS disponibles. Notez que le code est différent à chaque fois que vous lancez le flux.

La séquence typique est la suivante.

  1. Appelez plateforme signInWithPhoneNumber pour démarrer le processus de vérification.
  2. Récupérer le code de vérification à l' aide du point de terminaison REST spécifique émulateur .
  3. Appel confirmationResult.confirm(code) comme d' habitude avec le code de vérification.

Authentification émulée par un fournisseur d'identité tiers (IDP)

L'émulateur d'authentification vous permet de tester de nombreux flux d'authentification tiers dans vos applications iOS, Android ou Web sans modification du code de production. Pour des exemples de flux d'authentification, consultez la documentation pour diverses combinaisons de fournisseurs et plates - formes que vous pouvez utiliser dans votre application .

De manière générale, vous pouvez utiliser le SDK Firebase pour vous authentifier de l'une des deux manières suivantes :

  • Votre application permet au SDK de gérer l'ensemble du processus de bout en bout, y compris toutes les interactions avec les fournisseurs IDP tiers pour récupérer les informations d'identification.
  • Votre application récupère manuellement les informations d'identification d'un fournisseur tiers à l'aide du SDK de cette partie et transmet ces informations d'identification au SDK d'authentification.

Encore une fois, vérifiez le lien de documentation ci-dessus et assurez-vous que vous êtes familiarisé avec le flux (récupération manuelle des informations d'identification gérée par le SDK Firebase ou manuelle) que vous souhaitez utiliser. L'émulateur d'authentification prend en charge les tests de l'une ou l'autre approche.

Tester les flux IDP basés sur le SDK Firebase

Si votre application utilise tout flux de bout en bout SDK Firebase, comme OAuthProvider pour la connexion avec Microsoft, GitHub ou Yahoo, pour le test interactif, l'émulateur authentification sert une version locale du signe en correspondant la page pour vous aider à tester l' authentification à partir d' applications Web qui appellent le signinWithPopup ou signInWithRedirect méthode. Cette page de connexion desservie localement apparaît également dans les applications mobiles, rendue par la bibliothèque Webview de votre plate-forme.

L'émulateur crée des comptes d'utilisateurs tiers fictifs et des informations d'identification selon les besoins au fur et à mesure des flux.

Test des flux IDP avec récupération manuelle des informations d'identification

Si vous utilisez en signe-techniques « manuel » et l' appel de votre plate - forme signInWithCredentials méthode, puis, comme d' habitude, votre application demandera réel de connexion tiers et récupérer des informations d' identification réelles tiers.

Notez que l'émulateur ne supporte que signInWithCredential l' authentification des informations d' identification extraites de session Google, Apple et d' autres fournisseurs qui ID utiliser des jetons mis en œuvre comme JSON Tokens Web (JWTs) Les. Les jetons d'accès (par exemple ceux fournis par Facebook ou Twitter, qui ne sont pas des JWT) ne sont pas pris en charge. La section suivante traite d'une alternative dans ces cas.

Tests non interactifs

Une approche des tests non interactifs consiste à automatiser les clics des utilisateurs sur la page de connexion servie par l'émulateur. Pour les applications Web, utilisez une interface de contrôle telle que WebDriver. Pour les mobiles, utilisez les outils de test d'interface utilisateur de votre plate-forme, comme Espresso ou Xcode.

Vous pouvez mettre à jour votre code pour utiliser signInWithCredential (par exemple dans une branche de code) et d' utiliser un flux d'authentification par jeton avec des jetons simulacres d'identification pour les comptes à la place des pouvoirs réels.

  1. Reconnectez ou commentez la partie de votre code qui récupère les idTokens de l'IDP ; cela élimine le besoin de saisir de vrais noms d'utilisateur et mots de passe pendant vos tests, et soulage vos tests des quotas d'API et des limites de débit à l'IDP.
  2. En second lieu , utiliser une chaîne JSON littérale en place du jeton pour signInWithCredential . En utilisant le SDK Web comme exemple, vous pouvez remplacer le code par :
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

Lorsqu'il est utilisé avec l'émulateur, ce code d' authentifier un utilisateur email foo@example.com à Google. Considérez le sous-champ comme une clé primaire, qui peut être remplacée par n'importe quelle chaîne, se moquant de la connexion de différents utilisateurs. Vous pouvez remplacer firebase.auth.GoogleAuthProvider , par exemple, new firebase.auth.OAuthProvider('yahoo.com') ou tout autre fournisseur ID que vous voulez railler.

Et ensuite ?

  • Pour un ensemble Curated de vidéos et comment à des exemples détaillés, suivez la Firebase émulateurs Training Playlist .

  • Étant donné que les fonctions déclenchées sont une intégration typique avec l' authentification, en savoir plus sur les fonctions Cloud pour émulateur Firebase à fonctions Run localement .