Crate firebase_auth
source ·Expand description
Firebase authentication layer for popular frameworks.
Support:
§Example:
§Actix
use actix_web::{get, middleware::Logger, web::Data, App, HttpServer, Responder};
use firebase_auth::{FirebaseAuth, FirebaseUser};
#[get("/hello")]
async fn greet(user: FirebaseUser) -> impl Responder {
let email = user.email.unwrap_or("empty email".to_string());
format!("Hello {}!", email)
}
#[get("/public")]
async fn public() -> impl Responder {
"ok"
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
let firebase_auth = FirebaseAuth::new("my-project-id").await;
let app_data = Data::new(firebase_auth);
HttpServer::new(move || {
App::new()
.wrap(Logger::default())
.app_data(app_data.clone())
.service(greet)
.service(public)
})
.bind(("127.0.0.1", 8080))?
.run()
.await
}
§Axum
use axum::{routing::get, Router};
use firebase_auth::{FirebaseAuth, FirebaseAuthState, FirebaseUser};
async fn greet(user: FirebaseUser) -> String {
let email = user.email.unwrap_or("empty email".to_string());
format!("hello {}", email)
}
async fn public() -> &'static str {
"ok"
}
#[tokio::main]
async fn main() {
let firebase_auth = FirebaseAuth::new("my-project-id").await;
let app = Router::new()
.route("/hello", get(greet))
.route("/", get(public))
.with_state(FirebaseAuthState { firebase_auth });
let addr = "127.0.0.1:8080";
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, app).await.unwrap();
}
Visit README.md for more details.
Structs§
- Provide a service to automatically pull the new google public key based on the Cache-Control header. If there is an error during refreshing, automatically retry indefinitely every 10 seconds.
- The Jwt claims decoded from the user token. Can also be viewed as the Firebase User information.