Unofficial Wasm bindings for Firebase JS SDKs written in Rust.
Following example shows how to add email and password sign in to Sycamore app.
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>
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();
}
});
}
let result = auth.create_user_with_email_and_password(email, password).await;
let result = auth.sign_in_with_email_and_password(email, password).await;
let callback = Closure::new(move |user: JsValue| {
// Get info about user
});
auth.on_auth_state_changed(&callback);
callback.forget();
let config = Config::initialize({
"api_key",
None,
None,
Some(String::from("project_id")),
None,
None,
None,
});
// Initialize Firebase
let app = initialize_app(config);
// Initialize Realtime Database
let db = app.db();
let ref = db.ref(String::from("/"));
let callback = Closure::new(move |snapshot: Snapshot| {
web_sys::console::log_1(&snapshot.val());
});
r#ref.on(String::from("value"), &callback);
callback.forget();
Example | Description |
---|---|
sycamore-firebase-auth | Basic Sycamore auth example |
leptos-firebase-auth | Email and password authentication with Leptos |