로그인, 로그아웃, 계정 관리 기능을 제공합니다.
loginHandler 인스턴스 만들기
Copy var loginHandler = JELoginHandlerBuilder . BuildDefault ();
계정 저장 방식 지정, HttpClient 설정 등 더 자세한 설정 방법은 JELoginHandlerBuilder 문서를 참고하세요.
기본 로그인
Copy var session = await loginHandler . Authenticate ();
// var session = await loginHandler.Authenticate(selectedAccount, cancellationToken);
이 메서드는 먼저 가장 최근에 플레이한 계정으로 로그인 을 시도하고, 만약 실패한다면 새로운 계정으로 로그인 을 시도합니다.
새로운 계정으로 로그인
Copy var session = await loginHandler . AuthenticateInteractively ();
// var session = await loginHandler.AuthenticateInteractively(selectedAccount, cancellationToken);
새로운 계정을 추가하여 로그인합니다. 사용자에게 Microsoft OAuth 페이지를 표시하여 마이크로소프트 계정을 입력하도록 합니다.
가장 최근에 플레이한 계정으로 로그인
Copy var session = await loginHandler . AuthenticateSilently ();
// var session = await loginHandler.AuthenticateSilently(selectedAccount, cancellationToken);
가장 최근에 플레이한 계정 정보를 이용하여 로그인합니다.
만약 이미 유저가 로그인 된 상태라면, 로그인 정보를 즉시 반환합니다.
만약 로그인 정보가 만료된 상태라면, 세션 refresh 를 시도합니다. 이 과정은 유저와의 상호작용이나 웹뷰 없이 진행됩니다.
만약 유저의 로그인 정보가 저장되어 있지 않거나 세션 refresh 에 실패한다면 MicrosoftOAuthException
예외가 발생합니다. 이 경우 새로운 계정으로 로그인 같은 메서드를 통해 로그인을 다시 진행해야 합니다.
계정 목록 나열하기
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
foreach ( var account in accounts)
{
if (account is not JEGameAccount jeAccount)
continue ;
Console . WriteLine ( "Identifier: " + jeAccount . Identifier );
Console . WriteLine ( "LastAccess: " + jeAccount . LastAccess );
Console . WriteLine ( "Gamertag: " + jeAccount . XboxTokens ? . XstsToken ? . XuiClaims ? . Gamertag );
Console . WriteLine ( "Username: " + jeAccount . Profile ? . Username );
Console . WriteLine ( "UUID: " + jeAccount . Profile ? . UUID );
}
로그인에 성공한 계정은 자동으로 계정 정보가 파일에 저장됩니다. 위 코드는 저장되어 있는 모든 계정의 정보를 출력합니다.
계정 정보를 파일에 저장하는 방식을 바꾸려면 WithAccountManager 를 참고하세요.
계정 선택
index 번호로 계정 선택하기:
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . ElementAt ( 1 );
각 계정은 계정을 구분하기 위한 유일한 문자열 값(Identifier)을 가지고 있습니다. Identifier으로 계정을 선택하려면:
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . GetAccount ( "Identifier" );
JE 계정의 유저네임으로 계정을 선택하려면:
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . GetJEAccountByUsername ( "username" );
선택한 계정으로 로그인
선택한 계정으로 Silent 로그인 을 먼저 시도하고 실패한다면 선택한 계정으로 Interactive 로그인 을 시도합니다.
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . ElementAt ( 1 );
var session = await loginHandler . Authenticate (selectedAccount , CancellationToken . None );
계정 목록을 불러온 후 두번째 계정 (index number 1) 으로 로그인을 시도합니다.
선택한 계정으로 Interactive 로그인
Microsoft 로그인 페이지를 표시하고 유저가 계정 이메일과 비밀번호를 입력하여 로그인을 시도합니다.
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . ElementAt ( 1 );
var session = await loginHandler . AuthenticateInteractively (selectedAccount , CancellationToken . None );
선택한 계정으로 Silent 로그인
유저가 계정 정보를 입력할 필요 없이 프로그램에서 자동으로 저장된 계정 정보를 이용하여 로그인을 시도합니다.
만약 이미 유저가 로그인 된 상태라면, 로그인 정보를 즉시 반환합니다.
만약 로그인 정보가 만료된 상태라면, 세션 refresh 를 시도합니다. 이 과정은 유저와의 상호작용이나 웹뷰 없이 진행됩니다.
만약 유저의 로그인 정보가 저장되어 있지 않거나 세션 refresh 에 실패한다면 MicrosoftOAuthException
예외가 발생합니다. 이 경우 선택한 계정으로 Interactive 로그인 같은 메서드를 통해 로그인을 다시 진행해야 합니다.
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . ElementAt ( 1 );
var session = await loginHandler . AuthenticateSilently (selectedAccount , CancellationToken . None );
가장 최근에 로그인한 계정을 로그아웃
Signout
메서드는 WebView2 브라우저의 캐시를 지우지 않습니다. 브라우저 캐시도 같이 지우기 위해서는 SignoutWithBrowser
메서드를 이용하세요.
Copy await loginHandler . Signout ();
// await loginHandler.SignoutWithBrowser();
선택한 계정 로그아웃
Signout
메서드는 WebView2 브라우저의 캐시를 지우지 않습니다. 브라우저 캐시도 같이 지우기 위해서는 SignoutWithBrowser
메서드를 이용하세요.
Copy var accounts = loginHandler . AccountManager . GetAccounts ();
var selectedAccount = accounts . ElementAt ( 1 );
await loginHandler . Signout (selectedAccount);
// await loginHandler.SignoutWithBrowser();
계정 목록을 불러온 후 두번째 계정 (index number 1) 으로 로그아웃을 시도합니다.
더 많은 로그인 옵션
Copy using XboxAuthNet . Game ;
// 1. Authenticator 생성
var authenticator = loginHandler . CreateAuthenticator (account , default );
// 2. OAuth
authenticator . AddMicrosoftOAuthForJE (oauth => oauth . Interactive ());
// 3. XboxAuth
authenticator . AddXboxAuthForJE (xbox => xbox . Basic ());
// 4. JEAuthenticator
authenticator . AddJEAuthenticator ();
// authenticator 실행
var session = await authenticator . ExecuteForLauncherAsync ();
로그인 과정은 크게 네 과정을 거칩니다. 각 과정에서 로그인 과정을 바꿀 수 있는 많은 메서드들이 있습니다. 각 과정 안에서 반드시 하나의 메서드를 선택해야 합니다.
1. Authenticator 생성
Copy var authenticator = loginHandler . CreateAuthenticator (account , default );
선택한 계정으로 로그인을 진행하는 Authenticator
를 초기화합니다. 다른 방법도 있습니다:
Copy var authenticator = loginHandler . CreateAuthenticatorWithNewAccount ( default );
빈 계정을 새로 만들어 Authenticator
를 초기화합니다. 새로운 계정으로 로그인 에서 사용합니다.
Copy var authenticator = loginHandler . CreateAuthenticatorWithDefaultAccount ( default );
가장 최근에 로그인한 계정으로 Authenticator
를 초기화합니다. 가장 최근에 플레이한 계정으로 로그인 에서 사용합니다.
default
대신 CancellationToken 를 넣어 쓸 수 있습니다.
2. OAuth
Copy authenticator . AddMicrosoftOAuthForJE (oauth => oauth . Interactive ());
// 위 코드는 아래와 같습니다:
// authenticator.AddMicrosoftOAuth(JELoginHandler.DefaultMicrosoftOAuthClientInfo, oauth => oauth.Interactive());
// OAuth 다른 방법:
// 1) authenticator.AddForceMicrosoftOAuthForJE(oauth => oauth.Interactive());
// 2) authenticator.AddMicrosoftOAuthForJE(oauth => oauth.Silent());
Microsoft OAuth 모드를 설정합니다. oauth => oauth.Interactive()
대신 사용할 수 있는 많은 옵션들이 있습니다. OAuth 참고.
AddMicrosoftOAuthForJE
와 AddForceMicrosoftOAuthForJE
메서드는 모장 마인크래프트 런처에서 사용하는 기본 MicrosoftOAuthClientInfo
를 자동으로 추가합니다.
AddMicrosoftOAuth
는 Windows 플랫폼에서만 작동합니다. 다른 플랫폼(Linux, macOS) 에서 사용하기 위해서는 Authentication with MSAL 을 사용하세요.
Copy // XboxAuthNet.Game.Msal 예시
authenticator . AddMsalOAuth (app , msal => msal . Interactive ());
3. XboxAuth
Copy authenticator . AddXboxAuthForJE (xbox => xbox . Basic ());
// 위 코드는 아래와 같습니다:
// authenticator.AddXboxAuth(xbox => xbox.WithRelyingParty(JELoginHandler.RelyingParty).Basic());
// 다른 xbox auth 방법:
// 1) authenticator.AddXboxAuthForJE(xbox => xbox.Full());
// 2) authenticator.AddXboxAuthForJE(xbox => xbox.Sisu("<CLIENT-ID>"));
Xbox 로그인 모드 설정. xbox => xbox.Basic()
대신 사용할 수 있는 많은 옵션들이 있습니다. XboxAuth 참고.
AddXboxAuthForJE
와 AddForceXboxAuthForJE
메서드는 마인크래프트 자바 에디션에서 사용하는 기본 relying party 를 자동으로 설정합니다.
4. JEAuthenticator
Minecraft: JE 로그인 모드 설정. JEAuthenticator 참고.