Skip to content

This library provides functionality for Firebase Authentication, Realtime Database, and Firestore operations using ESP8266/ESP32 boards. It includes methods for user authentication (sign up, sign in, reset password), database operations (put, update, get, remove), and more.

License

Notifications You must be signed in to change notification settings

Init-io/FireEsp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


FireEsp - A C++ Firebase Library for Arduino

Arduino Library GitHub Release License

FireEsp is a lightweight C++ library that simplifies the integration of Firebase services into your Arduino projects. It provides classes to interact with Firebase Authentication, Realtime Database, and Server Configuration. This library is designed for ease of use and aims to make Firebase integration seamless for IoT and embedded projects using Arduino-compatible boards.


Features

  • Firebase Authentication: Sign up, sign in, reset passwords, verify email addresses, delete users, and refresh ID tokens.
  • Firebase Realtime Database: Perform basic CRUD operations (create, read, update, delete) on Firebase's Realtime Database.
  • Server Configuration: Set and manage Firebase project details such as API key, auth domain, and database URL.
  • HTTP Requests: Send HTTP requests to Firebase's REST API to perform authentication and database operations.
  • Debugging Support: Easily switch between production and debugging modes with a configurable debug level.
  • Token Management: Full support for refresh tokens and ID token renewal.

Requirements

  • Arduino IDE: To compile and upload code to your Arduino or compatible board.
  • Firebase Project: You need a Firebase project with Authentication and Realtime Database enabled.
  • Arduino-Compatible Board: Supports boards like ESP8266, ESP32, etc.

Installation

git clone https://github.com/Init-io/FireEsp.git
  1. Open the Arduino IDE.
  2. Go to Sketch > Include Library > Add .ZIP Library....
  3. Select the FireESP folder.

Usage

Firebase Configuration

FbServer server("YOUR_API_KEY", "YOUR_AUTH_DOMAIN", "YOUR_DATABASE_URL");
server.initialize();

Firebase Authentication

Sign Up

FbAuthentication auth(server);
bool success = auth.signUp("user@example.com", "password123");

Sign In

bool success = auth.signIn("user@example.com", "password123");

Refresh ID Token

bool success = auth.refreshIdToken(auth.getRefreshToken());

Get Current Tokens

String idToken = auth.getIdToken();
String refreshToken = auth.getRefreshToken();

Reset Password

bool success = auth.resetPassword("user@example.com");

Verify Email

bool success = auth.verifyEmail(auth.getIdToken());

Check Email Verification

bool verified = auth.checkEmailVerified(auth.getIdToken());

Delete User

bool success = auth.deleteUser(auth.getIdToken());

Firebase Database Operations

Put Data (String)

FbDatabase database(server);
bool success = database.put("/path/to/data", "key", "value", auth.getIdToken());

Put Data (Integer)

bool success = database.put("/path/to/data", "key", 123, auth.getIdToken());

Put Raw JSON

bool success = database.putJson("/path/to/data", "{\"name\":\"John\",\"age\":25}", auth.getIdToken());

Update Data (String)

bool success = database.update("/path/to/data", "key", "new_value", auth.getIdToken());

Get Data (String)

String value = database.get("/path/to/data", auth.getIdToken());

Get Raw JSON

String json = database.getJson("/path/to/data", auth.getIdToken());

Remove Data

bool success = database.remove("/path/to/data", auth.getIdToken());

Debugging Support

Enable or disable debugging globally.

#define DEBUG 1  // 1 = Debug Mode, 0 = Production Mode
#include <FireEsp.h>
  • Debug Mode: Prints HTTP requests, responses, and errors.
  • Production Mode: No sensitive data is printed.

Example Project

#define DEBUG 1
#include <FireEsp.h>

FbServer server("YOUR_API_KEY", "YOUR_AUTH_DOMAIN", "YOUR_DATABASE_URL");
FbAuthentication auth(server);
FbDatabase database(server);

void setup() {
  Serial.begin(115200);
  server.initialize();

  if (auth.signIn("user@example.com", "password123")) {
    Serial.println("User signed in!");

    // Save Data
    database.put("/users/user1", "name", "John Doe", auth.getIdToken());

    // Refresh Token Example
    if (auth.refreshIdToken(auth.getRefreshToken())) {
      Serial.println("Token refreshed successfully!");
    }
  }
}

void loop() {
  // Your code here
}

Known Issues

  • WiFi Instability: Unstable networks may cause requests to fail intermittently.
  • Firebase Delays: Occasionally, Firebase may delay response, especially during refresh or sign-in.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Contributing

We welcome contributions! Please:

  • Fork the repo
  • Create a feature branch
  • Submit a pull request

Follow coding style and document your changes properly.


Contact


About

This library provides functionality for Firebase Authentication, Realtime Database, and Firestore operations using ESP8266/ESP32 boards. It includes methods for user authentication (sign up, sign in, reset password), database operations (put, update, get, remove), and more.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published