#oauth2 #minecraft #microsoft #service #access #online #account

minecraft-msa-auth

用于通过Microsoft账户进行身份验证以访问在线Minecraft服务的库

5个版本 (3个破坏性版本)

0.4.0 2024年4月21日
0.3.0 2023年2月23日
0.2.0 2023年2月23日
0.1.1 2023年2月22日
0.1.0 2023年2月22日

#186 in 身份验证

每月32次下载

MIT/Apache

25KB
157

minecraft-msa-auth

Crates.io docs.rs MIT/Apache 2.0 Crates.io Rust

此crate允许您使用Microsoft Oauth2令牌登录到Minecraft在线服务。您可以将其与oauth2-rs集成,并构建交互式身份验证流程。

示例

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);

请查看示例文件夹中的完整示例。

许可证

除非另有说明(以下和/或个别文件中),本仓库中所有代码均根据以下任一许可证双许可:

依赖关系

~4–16MB
~220K SLoC