Skip to content

Yggdrasil 验证模型

该验证模型实现了旧版 Mojang 的验证方案,目前该方案已经被弃用。

WARNING

继续使用该模型进行官方账户的验证将被视为无效的请求。 但该模型仍然可以用于登录使用第三方验证服务的服务器(例如 AuthLib-Injector)。

初始化验证器

您可以通过下面的代码初始化离线验证器:

c#
var yggdrasilAuthenticator = new YggdrasilAuthenticator
{
    AuthServer = "[CUSTOM_AUTH_SERVER]",
    Email = "[EMAIL],
    LauncherAccountParser = launcherAccountParser,
    Password = "[PASSWORD]"
};

在上述代码块中,请将这些参数按照您的实际情况替换:

项目说明
launcherAccountParser对于启动器账户解析器的初始化,详见此处
[CUSTOM_AUTH_SERVER]可选字段,自定义验证服务器地址,这个字段通常由第三方验证服务提供商提供,不填则使用 Mojang 官方的验证服务器地址
[EMAIL]验证账户的邮箱地址
[PASSWORD]验证账户的密码

TIP

对于 launcherAccountParser(游戏档案解析器)的初始化,请参考游戏档案解析器页面

WARNING

在使用第三方验证服务器时,请使用 https:// 而非 http:// 协议连接到验证服务器。 使用不安全的验证服务器可能会导致敏感数据泄露等问题。

获取验证结果

在您完成验证模型的初始化后,您只需要调用离线验证器的验证方法来完成账户验证。

在异步上下文中,使用 AuthTaskAsync 来完成验证:

c#
var authResult = await offlineAuthenticator.AuthTaskAsync(false);

在同步上下文中,使用 Auth 来完成验证:

c#
var authResult = offlineAuthenticator.Auth();

解读验证结果

在验证方法完成之后,验证模型会返回验证结果,这是父类型为 AuthResultBase 的对象。 所有的验证结果都包含一个枚举值 AuthStatus,该枚举值直接指示了验证结果的成功或是失败。 在下面您可以看到对验证结果的解读:

失败的验证结果

通过判断 Error 是否为空,您可以很轻松的判断验证模型返回的验证结果是否是有效的, Error 对象会包含以下字段来告诉您一些细节:

字段说明
authResult.Error.Cause导致问题的具体原因
authResult.Error.Error错误名称
authResult.Error.ErrorMessage错误的详细信息,可能包含解决方案

成功的验证结果

如果验证结果中的 Error 字段为空,则表示本次验证是有效的,成功的验证结果会包含下面的信息:

字段说明
authResult.Id该用户名的唯一标识符,ProjBobcat 使用特定的生成方式来生成这个标识符
authResult.AccessToken用户账户的授权凭据
authResult.Profiles用户可用的角色列表,可能包含多个可用角色
authResult.SelectedProfile用户当前选择的角色,该字段可能为空。如果为空则需要提示用户进行手动选择。
authResult.User用户账户信息摘要,包含一些基础的账户信息
authResult.LocalId本地 ID,通常为随机生成的 UUID
authResult.RemoteId验证服务器返回的远程 ID,通常为该用户的唯一标识符

使用 MIT 协议发行,喜欢我们的工作的话就给我们点一个 star ⭐ 吧!