use firebase_admin::auth::AuthClient;
use firebase_admin::core::ServiceAccountKey;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut args = std::env::args().skip(1);
let key_path = args
.next()
.expect("usage: <key.json> <project-id> <id-token>");
let project_id = args
.next()
.expect("usage: <key.json> <project-id> <id-token>");
let id_token = args
.next()
.expect("usage: <key.json> <project-id> <id-token>");
let key = ServiceAccountKey::from_file(key_path)?;
let auth = AuthClient::builder(project_id)
.service_account_key(key)
.build()?;
let session_cookie = auth
.create_session_cookie(&id_token, Duration::from_secs(5 * 24 * 60 * 60))
.await?;
println!("session cookie: {session_cookie}");
let claims = auth.verify_session_cookie(&session_cookie).await?;
println!("verified session for uid: {}", claims.sub);
Ok(())
}