# firebase-jwt-rs Firebase JWT decoding utility for Rust. Screen Shot 2023-01-05 at 11 03 13 PM ## What is this? If you have a Rust server and plan to have API for verifying your firebase users' [client token](https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients), then it's just for you! It only contains small utility to decode your [client token](https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients). **Read more:** https://firebase.google.com/docs/auth/admin/verify-id-tokens#verify_id_tokens_using_a_third-party_jwt_library ## Flow 1. In your frontend, you can get your uid + client-token by using Firebase Client SDK. Sample: https://firebase.google.com/docs/auth/admin/verify-id-tokens#retrieve_id_tokens_on_clients 2. Then your frontend can hit the backend Rust API and send over uid+client-token to the HTTP Header/POST body (up to you), which will be passed to `verify_token(uid, client_token)` util. 3. Add `FIREBASE_PROJECT_ID` environment variable to your backend on local and production server 4. Backend Rust will verify and send back the JWT claim response (including extracted user's data, and verified user_id) back as json ## How to use ```rs use firebase_jwt_rs::*; use jsonwebtoken::TokenData; use std::error::Error; let uid = "your-user-uid"; let client_token = "your-client-token"; let result: Result, Box> = verify_token(uid, client_token).await; match result { Ok(res: TokenData) => { let text: String = serde_json::to_string(&res.claims).unwrap(); println!("result:{text}"); } Err(e) => { println!("err:{e}"); } } ``` ## License MIT