From 4291f17acc2be72c44f2c7b87f54e80537110a4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+Ciilu@users.noreply.github.com> Date: Sun, 29 Mar 2026 16:26:39 +0800 Subject: [PATCH] update --- .../java/org/jackhuang/hmcl/game/OAuthServer.java | 12 ++++++++++-- .../hmcl/ui/account/MicrosoftAccountLoginPane.java | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/OAuthServer.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/OAuthServer.java index 726494e38f..bb06f36c75 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/OAuthServer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/OAuthServer.java @@ -30,7 +30,10 @@ import java.io.IOException; import java.security.SecureRandom; -import java.util.*; +import java.util.Base64; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -167,6 +170,7 @@ public static class Factory implements OAuth.Callback { public final EventManager onGrantDeviceCode = new EventManager<>(); public final EventManager onOpenBrowserAuthorizationCode = new EventManager<>(); public final EventManager onOpenBrowserDevice = new EventManager<>(); + private OAuthServer server; @Override public OAuth.Session startServer() throws IOException, AuthenticationException { @@ -177,7 +181,7 @@ public OAuth.Session startServer() throws IOException, AuthenticationException { IOException exception = null; for (int port : new int[]{29111, 29112, 29113, 29114, 29115}) { try { - OAuthServer server = new OAuthServer(port); + server = new OAuthServer(port); server.start(NanoHTTPD.SOCKET_READ_TIMEOUT, true); return server; } catch (IOException e) { @@ -207,6 +211,10 @@ public String getClientId() { return System.getProperty("hmcl.microsoft.auth.id", JarUtils.getAttribute("hmcl.microsoft.auth.id", "")); } + + public void stop() { + if (server != null) server.stop(); + } } public static class GrantDeviceCodeEvent extends Event { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/MicrosoftAccountLoginPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/MicrosoftAccountLoginPane.java index ce6f9c2e4d..f861871a25 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/MicrosoftAccountLoginPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/account/MicrosoftAccountLoginPane.java @@ -261,6 +261,7 @@ private void cancelAllTasks() { } private void onCancel() { + Accounts.OAUTH_CALLBACK.stop(); cancelAllTasks(); if (cancelCallback != null) cancelCallback.run(); fireEvent(new DialogCloseEvent());