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次下载
25KB
157 行
minecraft-msa-auth
此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);
请查看示例文件夹中的完整示例。
许可证
除非另有说明(以下和/或个别文件中),本仓库中所有代码均根据以下任一许可证双许可:
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
- Apache许可证,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
依赖关系
~4–16MB
~220K SLoC