Перейти до змісту

Автентифікація за допомогою MSAL

JELoginHandler за замовчуванням працює лише на Windows. Щоб використовувати його на інших платформах, необхідно задіяти XboxAuthNet.Game.Msal.

Існує два способи використання CmlLib.Core.Auth.Microsoft разом із XboxAuthNet.Game.Msal:

  • Зареєструвати OAuthProvider під час ініціалізації JELoginHandler.
  • Створити IAuthenticator та додати до нього автентифікатор MSAL.

Реєстрація OAuthProvider

Зареєструйте OAuthProvider під час ініціалізації JELoginHandler, щоб усі наступні викликані вами методи виконували вхід через MSAL.

var app = await MsalClientHelper.BuildApplicationWithCache("CLIENT-ID");
var loginHandler = new JELoginHandlerBuilder()
    .WithOAuthProvider(new MsalCodeFlowProvider(app))
    .Build();

// вхід
var session = await loginHandler.Authenticate();

// додання нового облікового запису
var session = await loginHandler.AuthenticateInteractively();

// вхід за допомогою останнього використаного облікового запису
var session = await loginHandler.AuthenticateSilently();

// очищення локальної сесії
await loginHandler.Signout();

// вихід з облікового запису через браузер
await loginHandler.SignoutWithBrowser();

Для отримання детальнішої інформації про loginHandler дивіться JELoginHandler.

Використання AddMsalOAuth

Автентифікація з новим обліковим записом:

var app = await MsalClientHelper.BuildApplicationWithCache("CLIENT-ID");
var loginHandler = new JELoginHandlerBuilder()
    .Build();

// створення автентифікатора для нового облікового запису
var authenticator = loginHandler.CreateAuthenticatorWithNewAccount();
authenticator.AddMsalOAuth(app, msal => msal.Interactive());
authenticator.AddXboxAuthForJE(xbox => xbox.Basic());
authenticator.AddForceJEAuthenticator();
var session = await authenticator.ExecuteForLauncherAsync();

Автентифікація з останнім використаним обліковим записом:

var app = await MsalClientHelper.BuildApplicationWithCache("CLIENT-ID");
var loginHandler = new JELoginHandlerBuilder()
    .Build();

// створення автентифікатора для останнього використаного облікового запису
var authenticator = loginHandler.CreateAuthenticatorWithDefaultAccount();
authenticator.AddMsalOAuth(app, msal => msal.Silent());
authenticator.AddXboxAuthForJE(xbox => xbox.Basic());
authenticator.AddJEAuthenticator();
var session = await authenticator.ExecuteForLauncherAsync();

Вихід з облікового запису:

var app = await MsalClientHelper.BuildApplicationWithCache("CLIENT-ID");
var loginHandler = new JELoginHandlerBuilder()
    .Build();

var authenticator = loginHandler.CreateAuthenticatorWithDefaultAccount();
authenticator.AddMsalOAuth(app, msal => msal.ClearSession());
authenticator.AddXboxAuthSignout();
authenticator.AddJESignout();
var session = await authenticator.ExecuteForLauncherAsync();

Для отримання додаткової інформації про методи в MSAL, такі як msal.Interactive(), msal.Silent() тощо, дивіться OAuth.

Довідник API