fix mihoyo login no login_ticket crash

This commit is contained in:
DismissedLight
2023-09-26 23:40:30 +08:00
parent df23fe54d6
commit 6d6d97c59a
2 changed files with 23 additions and 1 deletions

View File

@@ -57,7 +57,12 @@ internal sealed partial class LoginMihoyoUserPage : Microsoft.UI.Xaml.Controls.P
CoreWebView2CookieManager manager = WebView.CoreWebView2.CookieManager;
IReadOnlyList<CoreWebView2Cookie> 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<ListWrapper<NameToken>> multiTokenResponse = await Ioc.Default
.GetRequiredService<AuthClient>()
.GetMultiTokenByLoginTicketAsync(loginTicketCookie, false)

View File

@@ -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);