From af251ec06db1ff7be48340993e0a1861dbfa871e Mon Sep 17 00:00:00 2001 From: BTMuli Date: Fri, 3 Apr 2026 22:18:18 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=B7=EF=B8=8F=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=90=AF=E5=8A=A8=20Ticket=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E7=B1=BB=E5=9E=8B=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=AE=89=E5=85=A8=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/app/t-sidebar.vue | 9 +++++++-- src/components/pageConfig/tc-gameBadge.vue | 9 +++++++-- src/request/passportReq.ts | 11 +++++------ src/types/Game/Login.d.ts | 15 +++++++++++++++ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/components/app/t-sidebar.vue b/src/components/app/t-sidebar.vue index d9c09475..0661adbb 100644 --- a/src/components/app/t-sidebar.vue +++ b/src/components/app/t-sidebar.vue @@ -741,7 +741,12 @@ async function tryLaunchGame(): Promise { } const gamePath = `${gameDir.value}${path.sep()}${find.name}`; const resp = await passportReq.authTicket(account.value, cookie.value); - if (typeof resp !== "string") { + if (typeof resp !== "object") { + showSnackbar.error(resp); + await TGLogger.Error(`[sidebar][tryLaunchGame] resp: ${resp}`); + return; + } + if ("retcode" in resp) { showSnackbar.error(`[${resp.retcode}] ${resp.message}`); await TGLogger.Error( `[sidebar][tryLaunchGame] 尝试获取authTicket失败,当前用户:${account.value.uid}-${account.value.gameUid}`, @@ -751,7 +756,7 @@ async function tryLaunchGame(): Promise { } showSnackbar.success(`成功获取ticket:${resp},正在启动应用...`); try { - await invoke("launch_game", { path: gamePath, ticket: resp }); + await invoke("launch_game", { path: gamePath, ticket: resp.ticket }); } catch (error) { showSnackbar.error(`${error}`); } diff --git a/src/components/pageConfig/tc-gameBadge.vue b/src/components/pageConfig/tc-gameBadge.vue index c4c9f045..7ba04ef2 100644 --- a/src/components/pageConfig/tc-gameBadge.vue +++ b/src/components/pageConfig/tc-gameBadge.vue @@ -50,7 +50,12 @@ async function tryPlayGame(): Promise { } const gamePath = `${gameDir.value}${path.sep()}${find.name}`; const resp = await passportReq.authTicket(account.value, cookie.value); - if (typeof resp !== "string") { + if (typeof resp !== "object") { + showSnackbar.error(resp); + await TGLogger.Error(`[sidebar][tryLaunchGame] resp: ${resp}`); + return; + } + if ("retcode" in resp) { showSnackbar.error(`[${resp.retcode}] ${resp.message}`); await TGLogger.Error( `[config][gameBadge] 尝试获取authTicket失败,当前用户:${account.value.uid}-${account.value.gameUid}`, @@ -60,7 +65,7 @@ async function tryPlayGame(): Promise { } showSnackbar.success(`成功获取ticket:${resp},正在启动应用...`); try { - await invoke("launch_game", { path: gamePath, ticket: resp }); + await invoke("launch_game", { path: gamePath, ticket: resp.ticket }); } catch (error) { showSnackbar.error(`${error}`); } diff --git a/src/request/passportReq.ts b/src/request/passportReq.ts index 0d585985..26620b3d 100644 --- a/src/request/passportReq.ts +++ b/src/request/passportReq.ts @@ -1,6 +1,6 @@ /** * Passport 相关请求 - * @since Beta v0.7.2 + * @since Beta v0.9.9 */ import { getRequestHeader } from "@utils/getRequestHeader.js"; import TGBbs from "@utils/TGBbs.js"; @@ -37,7 +37,7 @@ function rsaEncrypt(data: string): string { /** * 获取登录ticket - * @since Beta v0.6.0 + * @since Beta v0.9.9 * @param account - 账户 * @param cookie - cookie * @returns ticket @@ -45,7 +45,7 @@ function rsaEncrypt(data: string): string { async function createAuthTicketByGameBiz( account: TGApp.Sqlite.Account.Game, cookie: TGApp.App.Account.Cookie, -): Promise { +): Promise { const params: Record = { game_biz: account.gameBiz, stoken: cookie.stoken, @@ -56,13 +56,12 @@ async function createAuthTicketByGameBiz( "x-rpc-client_type": "3", "x-rpc-app_id": "ddxf5dufpuyo", }; - type ResType = { ticket: string }; - const resp = await TGHttp>( + const resp = await TGHttp( `${pAbu}account/ma-cn-verifier/app/createAuthTicketByGameBiz`, { method: "POST", headers: headers, query: params }, ); if (resp.retcode !== 0) return resp; - return resp.data.ticket; + return resp.data; } /** diff --git a/src/types/Game/Login.d.ts b/src/types/Game/Login.d.ts index 2c303c56..55e57ff6 100644 --- a/src/types/Game/Login.d.ts +++ b/src/types/Game/Login.d.ts @@ -99,4 +99,19 @@ declare namespace TGApp.Game.Login { /** 是否需要实名 */ need_realperson: boolean; }; + + /** + * 游戏启动 Ticket 返回响应 + * @since Beta v0.9.9 + */ + type GameAuthTicketResp = TGApp.BBS.Response.BaseWithData; + + /** + * 游戏启动 Ticket 返回 + * @since Beta v0.9.9 + */ + type GameAuthTicketRes = { + /** Ticket */ + ticket: string; + }; }