firebase-js-rs

Crates.iofirebase-js-rs
lib.rsfirebase-js-rs
version0.1.1
sourcesrc
created_at2023-02-26 15:49:28.429026
updated_at2023-02-27 13:32:49.261237
descriptionUnofficial Wasm bindings for Firebase JS SDKs
homepage
repositoryhttps://github.com/wa1aric/firebase-js-rs/
max_upload_size
id795242
size7,140
Valery Stepanov (wa1aric)

documentation

README

firebase-js-rs

Unofficial Wasm bindings for Firebase JS SDKs written in Rust.

Get strted

Following example shows how to add email and password sign in to Sycamore app.

Add and initialize SDK

Install firebase-js-rs by running the following Cargo command in your project directory:

cargo add firebase-js-rs

or alternatively add the following line to your Cargo.toml:

firebase-js-rs = "0.1.1"

Then add project in the Firebase console and install JS SDKs from the CDN.

<html>
  <head>
    <script src="https://www.gstatic.com/firebasejs/9.17.1/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/9.17.1/firebase-auth-compat.js"></script>
  </head>
</html>

Initialize Firebase app and get reference to the authentication service

use sycamore::prelude::*;
use firebase_js_rs::{app::initialize_app, Config};

fn main() {
  sycamore::render(|cx| {
    view! { cx,
          // Initialize Firebase
          let firebase_app = initialize_app(Config::initialize(
            "api_key", None, None, None, None, None, None,
            ));
          // Get reference to the auth service
            let auth = app.auth();
        }
    });
}

Create new user

let result = auth.create_user_with_email_and_password(email, password).await;

Sign in user

let result = auth.sign_in_with_email_and_password(email, password).await;

Observe authentication state

let callback = Closure::new(move |user: JsValue| {
  // Get info about user
});
auth.on_auth_state_changed(&callback);
callback.forget();
Commit count: 25

cargo fmt