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; + }; }