OneLauncher-Cracked/packages/oneclient_core/examples/auth_msa.rs
LynithDev 9ab0a0ecdd
Freya rewrite
This is v2 of OneClient. Removed all web-related stuff.

Co-Authored-By: Julian Chang <wyvest@polyfrost.org>
2026-07-05 16:37:05 -04:00

47 lines
1.3 KiB
Rust

use std::process::Command;
use oneclient_core::auth;
use oneclient_core::{dev, logger, LauncherResult};
#[tokio::main]
async fn main() -> LauncherResult<()> {
logger::init_debug()?;
dev::initialize().await?;
let flow = auth::begin_microsoft_login().await?;
println!("{}\n", flow.message);
println!("Verification URL: {}", flow.verification_uri);
println!("Enter this code: {}\n", flow.user_code);
try_open_browser(&flow.verification_uri);
println!("Waiting for you to sign in...");
let account = auth::finish_microsoft_login(flow).await?;
println!(
"Signed in as {} ({})\n token expires: {}",
account.username, account.id, account.expires
);
println!("Account saved to {}", oneclient_core::paths::auth_file()?.display());
Ok(())
}
fn try_open_browser(url: &str) {
let result = if cfg!(target_os = "windows") {
Command::new("cmd").args(["/C", "start", "", url]).spawn()
} else if cfg!(target_os = "macos") {
Command::new("open").arg(url).spawn()
} else {
Command::new("xdg-open").arg(url).spawn()
};
match result {
Ok(_) => println!("Opened verification page in your default browser.\n"),
Err(err) => {
println!("Could not open browser automatically ({err}). Open the URL above manually.\n");
}
}
}