diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs index 09534641..726f9f57 100644 --- a/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/View/Page/LoginMihoyoUserPage.xaml.cs @@ -57,7 +57,12 @@ internal sealed partial class LoginMihoyoUserPage : Microsoft.UI.Xaml.Controls.P CoreWebView2CookieManager manager = WebView.CoreWebView2.CookieManager; IReadOnlyList cookies = await manager.GetCookiesAsync("https://user.mihoyo.com"); - Cookie loginTicketCookie = Cookie.FromCoreWebView2Cookies(cookies); + Cookie webCookie = Cookie.FromCoreWebView2Cookies(cookies); + if (!webCookie.TryGetCookieToken(out Cookie? loginTicketCookie)) + { + return; + } + Response> multiTokenResponse = await Ioc.Default .GetRequiredService() .GetMultiTokenByLoginTicketAsync(loginTicketCookie, false) diff --git a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Cookie.cs b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Cookie.cs index ebf0ca92..eee15a0b 100644 --- a/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Cookie.cs +++ b/src/Snap.Hutao/Snap.Hutao/Web/Hoyolab/Cookie.cs @@ -108,6 +108,23 @@ internal sealed partial class Cookie return new(cookieMap); } + public bool TryGetLoginTicket([NotNullWhen(true)] out Cookie? cookie) + { + if (TryGetValue(LOGIN_TICKET, out string? loginTicket) && TryGetValue(LOGIN_UID, out string? loginUid)) + { + cookie = new Cookie(new() + { + [LOGIN_TICKET] = loginTicket, + [LOGIN_UID] = loginUid, + }); + + return true; + } + + cookie = null; + return false; + } + public bool TryGetSToken(bool isOversea, [NotNullWhen(true)] out Cookie? cookie) { return isOversea ? TryGetLegacySToken(out cookie) : TryGetSToken(out cookie);