MicrosoftLoginScreen

class MicrosoftLoginScreen(url: String, service: ExternalBrowserMsaAuthService, parent: Screen?) : Screen

Hosts the Microsoft login page in a CEF browser.

MinecraftAuth ships a JavaFX web view for this, but we do not ship JavaFX, so ExternalBrowserMsaAuthService lets the login run in the browser the client already has. The screen reports every URL the page navigates to, and the service picks the auth code out of the redirect.

The browser is incognito, so the Microsoft session never reaches the client's cookie store. Without that, signing in would leave the account logged in for anyone who opens a browser afterwards, and adding a second account would silently reuse the first one's session instead of asking who to sign in as.

The screen does not close itself on success - the service's close callback does, once the auth code has been exchanged for a token.

Constructors

Link copied to clipboard
constructor(url: String, service: ExternalBrowserMsaAuthService, parent: Screen?)

Properties

Link copied to clipboard
open val backgroundMusic: @Nullable Music?
Link copied to clipboard
open val currentFocusPath: @Nullable ComponentPath?
Link copied to clipboard
open var focused: @Nullable GuiEventListener?
Link copied to clipboard
open val font: Font?
Link copied to clipboard
var height: Int
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open var isFocused: Boolean
Link copied to clipboard
Link copied to clipboard
open override val isPauseScreen: Boolean
Link copied to clipboard
open val narrationMessage: Component?
Link copied to clipboard
open val rectangle: ScreenRectangle?
Link copied to clipboard
Link copied to clipboard
open val tabOrderGroup: Int
Link copied to clipboard
open val title: Component?
Link copied to clipboard
var width: Int

Functions

Link copied to clipboard
open fun added()
Link copied to clipboard
Link copied to clipboard
open fun afterMouseAction()
Link copied to clipboard
open fun afterMouseMove()
Link copied to clipboard
fun Screen.canBeStolen(): Boolean
Link copied to clipboard
open fun charTyped(event: CharacterEvent?): Boolean
Link copied to clipboard
open fun children(): List<out GuiEventListener?>?
Link copied to clipboard
open fun clearFocus()
Link copied to clipboard
open fun extractBackground(graphics: GuiGraphicsExtractor?, mouseX: Int, mouseY: Int, a: Float)
Link copied to clipboard
open override fun extractRenderState(context: GuiGraphicsExtractor, mouseX: Int, mouseY: Int, delta: Float)
fun extractRenderStateWithTooltipAndSubtitles(graphics: GuiGraphicsExtractor?, mouseX: Int, mouseY: Int, a: Float)
Link copied to clipboard
open fun extractTransparentBackground(graphics: GuiGraphicsExtractor?)
Link copied to clipboard
open fun fillCrashDetails(report: CrashReport?)
Link copied to clipboard
open fun getBorderForArrowNavigation(opposite: ScreenDirection?): ScreenRectangle?
Link copied to clipboard
open fun getChildAt(x: Double, y: Double): Optional<GuiEventListener?>?
Link copied to clipboard
Link copied to clipboard
fun init(width: Int, height: Int)
Link copied to clipboard
open fun isMouseOver(mouseX: Double, mouseY: Double): Boolean
Link copied to clipboard
open override fun isPauseScreen(): Boolean
Link copied to clipboard
open fun keyPressed(event: KeyEvent?): Boolean
Link copied to clipboard
open fun keyReleased(event: KeyEvent?): Boolean
Link copied to clipboard
open fun mouseClicked(event: MouseButtonEvent?, doubleClick: Boolean): Boolean
Link copied to clipboard
open fun mouseDragged(event: MouseButtonEvent?, dx: Double, dy: Double): Boolean
Link copied to clipboard
open fun mouseMoved(x: Double, y: Double)
Link copied to clipboard
open fun mouseReleased(event: MouseButtonEvent?): Boolean
Link copied to clipboard
open fun mouseScrolled(x: Double, y: Double, scrollX: Double, scrollY: Double): Boolean
Link copied to clipboard
open fun nextFocusPath(navigationEvent: FocusNavigationEvent?): @Nullable ComponentPath?
Link copied to clipboard
open override fun onClose()
Link copied to clipboard
open fun onFilesDrop(files: List<Path?>?)
Link copied to clipboard
open fun preeditUpdated(event: @Nullable PreeditEvent?): Boolean
Link copied to clipboard
open override fun removed()

Cleanup lives here rather than in onClose because the screen is also dismissed programmatically once the sign-in finishes, and that path only goes through removed.

Link copied to clipboard
open fun resize(width: Int, height: Int)
Link copied to clipboard
open override fun shouldCloseOnEsc(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun tick()
Link copied to clipboard
open fun triggerImmediateNarration(onlyChanged: Boolean)
Link copied to clipboard
open fun updateNarratorStatus(wasDisabled: Boolean)