ESP32/ESP8266 : Authentification Firebase (e-mail et mot de passe)

ESP32/ESP8266 : Authentification Firebase (e-mail et mot de passe)

Dans ce guide, vous apprendrez à vous authentifier auprès de Firebase à l’aide de votre carte ESP32 ou ESP8266 avec un e-mail et un mot de passe. Ceci est utile pour restreindre ou autoriser l’accès à certains utilisateurs ou pour créer plusieurs utilisateurs pouvant accéder au même projet Firebase. De plus, cela est utile pour configurer des règles de base de données pour protéger les données de votre projet.

ESP32 ESP8266 Mot de passe de messagerie d'authentification Firebase

Autres tutoriels Firebase avec l’ESP32 qui pourraient vous intéresser :

Qu’est-ce que Firebase ?

Logo de la base de feu

Firebase est la plate-forme de développement d’applications mobiles de Google qui vous aide à créer, améliorer et développer votre application. Il dispose de nombreux services utilisés pour gérer les données de n’importe quelle application Android, IOS ou Web comme l’authentification, la base de données en temps réel, l’hébergement, etc. Dans ce didacticiel, nous nous concentrerons sur la partie authentification.

Aperçu du projet

  1. Créer un projet Firebase
  2. Définir les méthodes d’authentification
  3. Obtenir la clé API du projet
  4. Authentification avec ESP32/ESP8266

1) Créer un projet Firebase

1) Aller à Base de feu et connectez-vous à l’aide d’un compte Google.

2) Cliquez sur Commencer puis Ajouter un projet pour créer un nouveau projet.

3) Donnez un nom à votre projet, par exemple : Démo d’ESP Firebase.

Configurer le projet Firebase pour ESP32 et ESP8266 Étape 1

4) Désactiver l’option Activer Google Analytics pour ce projet car il n’est pas nécessaire et cliquez sur Créer un projet.

Configurer le projet Firebase pour ESP32 et ESP8266, étape 2

5) La configuration de votre projet prendra quelques secondes. Puis clique Continuez quand c’est prêt.

6) Vous serez redirigé vers votre page de console Project.

2) Définir les méthodes d’authentification

Pour autoriser l’authentification par e-mail et mot de passe, vous devez d’abord définir des méthodes d’authentification pour votre application.

« La plupart des applications ont besoin de connaître l’identité d’un utilisateur. Autrement dit, il se charge de se connecter et d’identifier les utilisateurs (en l’occurrence, l’ESP32 ou l’ESP8266). Connaître l’identité d’un utilisateur permet à une application d’enregistrer en toute sécurité les données de l’utilisateur dans le cloud et de fournir la même expérience personnalisée sur tous les appareils de l’utilisateur. Pour en savoir plus sur les méthodes d’authentification, vous pouvez lire la documentation.

1) Dans la barre latérale gauche, cliquez sur Authentification et puis sur Commencer.

Authentification du projet Firebase

2) Sélectionnez l’option Mot de passe de l’email.

Sélection de l'authentification Firebase avec e-mail/mot de passe

3) Activez cette méthode d’authentification et cliquez sur Sauvegarder.

Activer l'authentification par e-mail/mot de passe Firebase

4) L’authentification par e-mail et mot de passe devrait maintenant être activée.

Authentification Firebase avec e-mail/mot de passe activé

5) Maintenant, vous devez ajouter un utilisateur. Toujours sur le Authentification onglet, sélectionnez le Utilisateurs onglet en haut. Ensuite, cliquez sur Ajouter un utilisateur.

Authentification Firebase Ajouter un nouvel utilisateur

6) Ajoutez une adresse e-mail pour l’utilisateur autorisé. Il peut s’agir de l’e-mail de votre compte Google ou de tout autre e-mail. Vous pouvez également créer un e-mail pour ce projet spécifique. Ajoutez un mot de passe qui vous permettra de vous connecter à votre application et d’accéder à la base de données. N’oubliez pas de sauvegarder le mot de passe dans un endroit sûr car vous en aurez besoin plus tard. Lorsque vous avez terminé, cliquez sur Ajouter un utilisateur.

Authentification Firebase Ajouter un utilisateur avec e-mail et mot de passe

sept) Un nouvel utilisateur a été créé avec succès et ajouté au Utilisateurs tableau.

Tableau des utilisateurs de Firebase

Notez que Firebase crée un UID unique pour chaque utilisateur enregistré. L’UID de l’utilisateur nous permet d’identifier l’utilisateur et de garder une trace de l’utilisateur pour fournir ou refuser l’accès au projet ou à la base de données. Il y a aussi une colonne qui enregistre la date de la dernière connexion. Pour le moment, il est vide car nous ne nous sommes pas encore connectés avec cet utilisateur.

3) Obtenir la clé API du projet

Pour interagir avec votre projet Firebase à l’aide des cartes ESP32 ou ESP8266, vous devez obtenir la clé API de votre projet. Suivez les étapes suivantes pour obtenir la clé API de votre projet.

1) Dans la barre latérale gauche, cliquez sur Paramètres du projet.

Paramètres du projet Firebase

2) Copiez la clé API Web dans un endroit sûr car vous en aurez besoin plus tard.

Clé API Web des paramètres du projet Firebase

4) Authentification avec ESP32/ESP8266

Maintenant que votre projet Firebase est créé et que vous avez configuré la méthode d’authentification, vous apprendrez à vous connecter avec l’ESP32 à l’aide de l’adresse e-mail et du mot de passe de l’utilisateur autorisé.

Pour programmer l’ESP32, vous pouvez utiliser Arduino IDE, VS Code avec l’extension PlatformIO ou un autre logiciel approprié.

Noter: pour les projets firebase, nous vous recommandons d’utiliser VS Code avec l’extension PlatformIO car si vous souhaitez développer une application Web pour faire le pont entre l’ESP32 et Firebase, VS Code fournit tous les outils pour le faire. Cependant, nous ne construirons pas l’application Web dans ce didacticiel, vous pouvez donc utiliser Arduino IDE.

Installer la bibliothèque client Firebase-ESP

Il existe une bibliothèque avec de nombreux exemples pour utiliser Firebase avec l’ESP32 : le Bibliothèque Firebase-ESP-Client. Cette bibliothèque est compatible avec les cartes ESP32 et ESP8266.

Si vous aimez cette bibliothèque et que vous l’utiliserez dans vos projets, pensez à soutenir le travail du développeur.

Dans ce tutoriel, nous allons regarder un exemple simple pour authentifier l’ESP32. La bibliothèque fournit de nombreux autres exemples que vous pouvez consulter ici. Il propose également une documentation détaillée expliquant comment utiliser la bibliothèque.

Installation – Code VS + PlatformIO

Si vous utilisez VS Code avec l’extension PlatformIO, cliquez sur le Accueil PIO icône et sélectionnez le Onglet Bibliothèques. Rechercher « Client ESP Firebase« . Sélectionnez le Bibliothèque cliente Firebase Arduino pour ESP8266 et ESP32.

Installer le code VS de la bibliothèque cliente Firebase ESP

Puis clique Ajouter au projet et sélectionnez le projet sur lequel vous travaillez.

Ajouter la bibliothèque cliente Firebase ESP au code Project VS

Modifiez également la vitesse du moniteur à 115200 en ajoutant la ligne suivante à la platformio.ini dossier de votre projet :

monitor_speed = 115200

Installation – IDE Arduino

Si vous utilisez Arduino IDE, suivez les étapes suivantes pour installer la bibliothèque.

  1. Aller à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques
  2. Rechercher Client ESP Firebase et installez le Bibliothèque cliente Firebase Arduino pour ESP8266 et ESP32 par Mobitz.
Installez la bibliothèque cliente Firebase Arduino pour ESP8266 et ESP32 par Mobitz

Maintenant, vous êtes prêt à commencer à programmer la carte ESP32 ou ESP8266 pour interagir avec la base de données.

ESP32/ESP8266 E-mail/mot de passe d’authentification Firebase

Copiez le code suivant dans l’IDE Arduino ou dans le main.cpp fichier si vous utilisez VS Code.

/*
  Rui Santos
  Complete project details at our blog: https://Raspberryme.com/esp32-esp8266-firebase-authentication/
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  Based in the Authenticatiions Examples by Firebase-ESP-Client library by mobizt: https://github.com/mobizt/Firebase-ESP-Client/tree/main/examples/Authentications
*/

#include <Arduino.h>
#if defined(ESP32)
  #include <WiFi.h>
#elif defined(ESP8266)
  #include <ESP8266WiFi.h>
#endif
#include <Firebase_ESP_Client.h>

// Provide the token generation process info.
#include "addons/TokenHelper.h"
// Provide the RTDB payload printing info and other helper functions.
#include "addons/RTDBHelper.h"

// Insert your network credentials
#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"

// Insert Firebase project API Key
#define API_KEY "REPLACE_WITH_YOUR_FIREBASE_PROJECT_API_KEY"

// Insert Authorized Email and Corresponding Password
#define USER_EMAIL "[email protected]"
#define USER_PASSWORD "your_user_password"

// Define Firebase objects
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;

// Variable to save USER UID
String uid;

// Initialize WiFi
void initWiFi() {
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
  Serial.println();
}

void setup(){
  Serial.begin(115200);
  
  // Initialize WiFi
  initWiFi();

  // Assign the api key (required)
  config.api_key = API_KEY;

  // Assign the user sign in credentials
  auth.user.email = USER_EMAIL;
  auth.user.password = USER_PASSWORD;

  Firebase.reconnectWiFi(true);
  fbdo.setResponseSize(4096);

  // Assign the callback function for the long running token generation task
  config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h

  // Assign the maximum retry of token generation
  config.max_token_generation_retry = 5;

  // Initialize the library with the Firebase authen and config
  Firebase.begin(&config, &auth);

  // Getting the user UID might take a few seconds
  Serial.println("Getting User UID");
  while ((auth.token.uid) == "") {
    Serial.print('.');
    delay(1000);
  }
  // Print user UID
  uid = auth.token.uid.c_str();
  Serial.print("User UID: ");
  Serial.print(uid);
}

void loop(){

}

Afficher le code brut

Vous devez insérer vos informations d’identification réseau, votre base de données d’URL et votre clé API de projet pour que le projet fonctionne.

Ce croquis était basé sur le exemple d’authentification de base fourni par la bibliothèque. Vous pouvez trouver plus d’exemples ici.

Comment fonctionne le code

Continuez à lire pour savoir comment fonctionne le code, ou passez à la section de démonstration.

Inclure les bibliothèques

Tout d’abord, incluez les bibliothèques requises. le WiFi.h bibliothèque pour connecter l’ESP32 à internet (ou le ESP8266WiFi.h bibliothèque pour la carte ESP8266) et la Firebase_ESP_Client.h bibliothèque pour interfacer les cartes avec Firebase.

#include <Arduino.h>
#if defined(ESP32)
  #include <WiFi.h>
#elif defined(ESP8266)
  #include <ESP8266WiFi.h>
#endif
#include <Firebase_ESP_Client.h>

Vous devez également inclure les éléments suivants pour que la bibliothèque Firebase fonctionne.

// Provide the token generation process info.
#include "addons/TokenHelper.h"
// Provide the RTDB payload printing info and other helper functions.
#include "addons/RTDBHelper.h"

Identifiants du réseau

Incluez vos informations d’identification réseau dans les lignes suivantes afin que vos cartes puissent se connecter à Internet en utilisant votre réseau local.

// Insert your network credentials
#define WIFI_SSID "REPLACE_WITH_YOUR_SSID"
#define WIFI_PASSWORD "REPLACE_WITH_YOUR_PASSWORD"

Clé API du projet Firebase et utilisateur Firebase

Insérez votre Clé API du projet Firebase-celui que tu as dans cette section.

#define API_KEY "REPLACE_WITH_YOUR_PROJECT_API_KEY"

Insérez le email autorisé et le mot de passe correspondant—ce sont les détails de l’utilisateur que vous avez ajouté dans cette section.

// Insert Authorized Email and Corresponding Password
#define USER_EMAIL "REPLACE_WITH_THE_USER_EMAIL"
#define USER_PASSWORD "REPLACE_WITH_THE_USER_PASSWORD"

Objets Firebase et autres variables

La ligne suivante définit un FirebaseData objet.

FirebaseData fbdo;

La ligne suivante définit un FirebaseAuth objet nécessaire à l’authentification.

FirebaseAuth auth;

Enfin, la ligne suivante définit FirebaseConfig objet nécessaire pour les données de configuration.

FirebaseConfig config;

le fluide variable sera utilisée pour enregistrer l’UID de l’utilisateur. Nous pouvons obtenir l’UID de l’utilisateur après l’authentification.

String uid;

initWiFi()

le initWiFi() La fonction connecte votre ESP à Internet à l’aide des informations d’identification réseau fournies. Vous devez appeler cette fonction plus tard dans le mettre en place() pour initialiser le WiFi.

// Initialize WiFi
void initWiFi() {
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());
  Serial.println();
}

mettre en place()

Dans mettre en place(), initialisez le moniteur série à des fins de débogage à un débit en bauds de 115 200.

Serial.begin(115200);

Appeler le initWiFi() fonction pour initialiser le WiFi.

initWiFi();

Attribuez la clé API à la configuration Firebase.

config.api_key = API_KEY;

Les lignes suivantes attribuent l’e-mail et le mot de passe à l’objet d’authentification Firebase.

auth.user.email = USER_EMAIL;
auth.user.password = USER_PASSWORD;

Ajoutez ce qui suit à l’objet de configuration.

// Assign the callback function for the long running token generation task
config.token_status_callback = tokenStatusCallback; //see addons/TokenHelper.h

// Assign the maximum retry of token generation
config.max_token_generation_retry = 5;

Enfin, initialisez la bibliothèque Firebase (authentifiez-vous) avec les paramètres de configuration et d’authentification que nous avons définis précédemment.

// Initialize the library with the Firebase authen and config
Firebase.begin(&config, &auth);

Après avoir initialisé la bibliothèque, nous pouvons obtenir l’UID de l’utilisateur en appelant auth.token.uid. Obtenir l’UID de l’utilisateur peut prendre un certain temps, nous ajoutons donc une boucle while qui attend jusqu’à ce que nous l’obtenions.

// Getting the user UID might take a few seconds
Serial.println("Getting User UID");
while ((auth.token.uid) == "") {
  Serial.print('.');
  delay(1000);
}

Enfin, nous sauvegardons l’UID de l’utilisateur dans le fluide variable et imprimez-la dans le moniteur série.

uid = auth.token.uid.c_str();
Serial.print("User UID: ");
Serial.print(uid);

Après avoir téléchargé le code, ouvrez le moniteur série à un débit en bauds de 115 200.

Noter: si vous utilisez VS Code, vous devez ajouter la ligne suivante à votre platformio.ini fichier pour modifier le débit en bauds. Ensuite, enregistrez votre fichier.

monitor_speed = 115200

Réinitialisez votre carte en appuyant sur le bouton EN/RST intégré.

L’ESP32/ESP8266 authentifie l’utilisateur avec succès et obtient son UID.

Moniteur série IDE Arduino réussi de Firebase ESP32 ESP8266

Ensuite, accédez à la console de votre projet Firebase pour vérifier s’il s’est connecté en tant qu’utilisateur. Aller à Authentification > Utilisateurs. Maintenant, vous devriez avoir la date du jour dans le Signé Dans domaine. De plus, vous verrez que l’UID utilisateur correspond à l’UID imprimé par votre carte ESP dans le moniteur série.

Dernière connexion des utilisateurs de Firebase

Toutes nos félicitations! Vous vous êtes connecté avec succès à votre carte ESP32/ESP8266 en tant qu’utilisateur. Vous pouvez combiner cet exemple avec l’un de nos tutoriels précédents pour envoyer les lectures des capteurs à la base de données en tant qu’utilisateur autorisé : ESP32 : Getting Started with Firebase (Realtime Database)

Conclusion

Dans ce didacticiel, vous avez appris à configurer la carte ESP32/ESP8266 en tant qu’utilisateur pouvant accéder à votre projet Firebase avec une adresse e-mail et un mot de passe. Ce n’était qu’un exemple simple que vous pouvez appliquer à des projets plus avancés.

La configuration de l’ESP en tant qu’utilisateur vous permet d’identifier l’utilisateur pour activer ou restreindre l’accès au projet Firebase ou à la base de données ou à des nœuds de base de données spécifiques. Vous permet de configurer des règles de base de données.

Dans un futur didacticiel, nous vous montrerons comment utiliser cette fonctionnalité pour appliquer des règles de base de données et créer une application Web avec des fonctionnalités de connexion/déconnexion pour autoriser et restreindre l’accès aux données. Restez à l’écoute.

Si vous souhaitez en savoir plus sur la création d’une application Web Firebase complète pour contrôler et surveiller vos cartes ESP32 et ESP8266 de n’importe où, jetez un œil à notre dernier eBook (inscriptions uniquement disponibles au cours des prochains jours) :

Autres ressources qui pourraient vous être utiles :