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](https://github.com/Corona-Studio/ProjBobcat/blob/master/ProjBobcat/ProjBobcat/Class/Model/Auth/AuthResultBase.cs).
Все результаты аутентификации содержат значение перечисления **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 ⭐ 吧!