Crates.io | minecraft-msa-auth |
lib.rs | minecraft-msa-auth |
version | 0.4.0 |
source | src |
created_at | 2023-02-22 07:01:44.129149 |
updated_at | 2024-04-21 04:26:15.471143 |
description | A library for authenticating with Microsoft accounts to access online Minecraft services. |
homepage | |
repository | https://github.com/KernelFreeze/minecraft-msa-auth |
max_upload_size | |
id | 791516 |
size | 84,769 |
minecraft-msa-auth
This crate allows you to authenticate into Minecraft online services using a Microsoft Oauth2 token. You can integrate it with oauth2-rs and build interactive authentication flows.
const DEVICE_CODE_URL: &str = "https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode";
const MSA_AUTHORIZE_URL: &str = "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize";
const MSA_TOKEN_URL: &str = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
let client = BasicClient::new(
ClientId::new(client_id),
None,
AuthUrl::new(MSA_AUTHORIZE_URL.to_string())?,
Some(TokenUrl::new(MSA_TOKEN_URL.to_string())?),
)
.set_device_authorization_url(DeviceAuthorizationUrl::new(DEVICE_CODE_URL.to_string())?);
let details: StandardDeviceAuthorizationResponse = client
.exchange_device_code()?
.add_scope(Scope::new("XboxLive.signin offline_access".to_string()))
.request_async(async_http_client)
.await?;
println!(
"Open this URL in your browser: {} and enter the code: {}",
details.verification_uri().to_string(),
details.user_code().secret().to_string()
);
let token = client
.exchange_device_access_token(&details)
.request_async(async_http_client, tokio::time::sleep, None)
.await?;
println!("microsoft token: {:?}", token);
let mc_flow = MinecraftAuthorizationFlow::new(Client::new());
let mc_token = mc_flow.exchange_microsoft_token(token.access_token()).await?;
println!("minecraft token: {:?}", mc_token);
See full examples in the examples folder.
Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either: