From bda4966ae560973c3c2d94758039cedddd009050 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Mon, 4 Sep 2023 01:12:19 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=88=9D=E6=AD=A5=E6=89=93?= =?UTF-8?q?=E9=80=9A=E7=9B=B8=E5=85=B3=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/overlay/to-gameLogin.vue | 10 +- src/pages/User/Record.vue | 8 +- src/pages/common/Config.vue | 222 ++++++++++++++++-------- src/pages/common/Test.vue | 92 ++++++---- src/store/modules/app.ts | 9 +- src/store/modules/user.ts | 23 +++ src/web/request/TGRequest.ts | 13 +- src/web/request/getCookieToken.ts | 4 +- src/web/request/getLToken.ts | 9 +- src/web/request/getStoken.ts | 2 +- src/web/request/initCookie.ts | 50 ------ 11 files changed, 257 insertions(+), 185 deletions(-) delete mode 100644 src/web/request/initCookie.ts diff --git a/src/components/overlay/to-gameLogin.vue b/src/components/overlay/to-gameLogin.vue index bfb9d7c7..d91e815b 100644 --- a/src/components/overlay/to-gameLogin.vue +++ b/src/components/overlay/to-gameLogin.vue @@ -18,7 +18,7 @@ diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts index ea847314..e3350677 100644 --- a/src/store/modules/app.ts +++ b/src/store/modules/app.ts @@ -1,8 +1,8 @@ /** * @file store modules app.ts * @description App store module - * @author BTMuli - * @since Alpha v0.1.5 + * @author BTMuli + * @since Beta v0.3.0 */ // vue @@ -42,8 +42,6 @@ export const useAppStore = defineStore( const devEnv = ref(false); // 应用主题 const theme = ref("default"); - // 是否登录 - const isLogin = ref(false); const dataPath = reactive({ userDataDir, @@ -78,7 +76,6 @@ export const useAppStore = defineStore( } return { - isLogin, theme, loading, buildTime, @@ -102,7 +99,7 @@ export const useAppStore = defineStore( { key: "app", storage: window.localStorage, - paths: ["devMode", "loading", "buildTime", "isLogin", "devEnv"], + paths: ["devMode", "loading", "buildTime", "devEnv"], }, { key: "sidebar", diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 2316db94..fbbf2d7b 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -33,6 +33,27 @@ export const useUserStore = defineStore( }); const cookie = ref>({}); + // 判断当前用户是否已经登录 + function isLogin(): boolean { + return cookie.value?.account_id !== ""; + } + + // 加载用户数据,用于应用启动时 + async function loadUserData(): Promise { + if (isLogin()) { + const accountDB = await TGSqlite.getCurAccount(); + if (accountDB) { + setCurAccount(accountDB); + } + } else { + const cookieDB = await TGSqlite.getCookie(); + if (Object.keys(cookieDB).length > 0) { + cookie.value = cookieDB; + await loadUserData(); + } + } + } + function setBriefInfo(info: TGApp.App.Account.BriefInfo): void { briefInfo.value = info; } @@ -102,6 +123,8 @@ export const useUserStore = defineStore( getCookieGroup3, getCookieGroup4, saveCookie, + isLogin, + loadUserData, }; }, { diff --git a/src/web/request/TGRequest.ts b/src/web/request/TGRequest.ts index f0d2cb66..d67612bb 100644 --- a/src/web/request/TGRequest.ts +++ b/src/web/request/TGRequest.ts @@ -2,12 +2,12 @@ * @file web request TGRequest.ts * @description 应用用到的请求函数 * @author BTMuli - * @since Alpha v0.2.3 + * @since Beta v0.3.0 */ import { getAbyss } from "./getAbyss"; import { getAnnoList, getAnnoContent } from "./getAnno"; -import { getCookieTokenBySToken } from "./getCookieToken"; +import { getCookieTokenByGameToken, getCookieTokenBySToken } from "./getCookieToken"; // import * from "./getEnkaData.ts"; import { getGameAccountsBySToken, getGameAccountsByCookie } from "./getGameAccounts"; import { getGameRecord } from "./getGameRecord"; @@ -15,12 +15,10 @@ import { getLTokenBySToken } from "./getLToken"; import { getGameRoleListByLToken } from "./getRoleList"; import getSyncAvatarDetail from "./getSyncAvatarDetail"; import getSyncAvatarListAll from "./getSyncAvatarListAll"; -// import * from "./getTickets.ts"; import { getTokensByLoginTicket } from "./getTokens"; import { getUserInfoByCookie } from "./getUserInfo"; -// import * from "./getUserCard"; -import initCookie from "./initCookie"; import { verifyLToken } from "./verifyLToken"; +import { getStokenByGameToken } from "./getStoken"; const TGRequest = { Anno: { @@ -28,7 +26,6 @@ const TGRequest = { getContent: getAnnoContent, }, User: { - init: initCookie, getRecord: getGameRecord, byLoginTicket: { getTokens: getTokensByLoginTicket, @@ -47,6 +44,10 @@ const TGRequest = { getCookieToken: getCookieTokenBySToken, getLToken: getLTokenBySToken, }, + bgGameToken: { + getCookieToken: getCookieTokenByGameToken, + getStoken: getStokenByGameToken, + }, calculate: { getSyncAvatarListAll, getSyncAvatarDetail, diff --git a/src/web/request/getCookieToken.ts b/src/web/request/getCookieToken.ts index e8d49d36..97a1f7dd 100644 --- a/src/web/request/getCookieToken.ts +++ b/src/web/request/getCookieToken.ts @@ -54,10 +54,10 @@ export async function getCookieTokenByGameToken( gameToken: string, ): Promise { const url = "https://api-takumi.mihoyo.com/auth/api/getCookieAccountInfoByGameToken"; - const data = { account_id: accountId, game_token: gameToken }; + const data = { account_id: Number(accountId), game_token: gameToken }; return await http .fetch(url, { - method: "GET", + method: "POST", body: http.Body.json(data), }) .then((res) => { diff --git a/src/web/request/getLToken.ts b/src/web/request/getLToken.ts index 4fa4aa46..75829bd6 100644 --- a/src/web/request/getLToken.ts +++ b/src/web/request/getLToken.ts @@ -15,19 +15,20 @@ import TGUtils from "../utils/TGUtils"; /** * @description 根据 stoken 获取 ltoken * @since Alpha v0.1.5 - * @param {string} stuid 登录用户 uid - * @param {string} stoken stoken + * @param {string} mid 登录用户 mid + * @param {string} stoken stoken_v2 * @returns {Promise} */ export async function getLTokenBySToken( - stuid: string, + mid: string, stoken: string, ): Promise { const url = TGApi.GameTokens.getLToken; const cookie = { - stuid, + mid, stoken, }; + console.log(cookie); const params = { stoken }; const header = TGUtils.User.getHeader(cookie, "GET", params, "common"); return await http diff --git a/src/web/request/getStoken.ts b/src/web/request/getStoken.ts index 20f79515..5e9d4133 100644 --- a/src/web/request/getStoken.ts +++ b/src/web/request/getStoken.ts @@ -22,7 +22,7 @@ export async function getStokenByGameToken( gameToken: string, ): Promise { const url = "https://api-takumi.mihoyo.com/account/ma-cn-session/app/getTokenByGameToken"; - const data = { account_id: accountId, game_token: gameToken }; + const data = { account_id: Number(accountId), game_token: gameToken }; const header = { "x-rpc-app_id": TGConstant.BBS.APP_ID, }; diff --git a/src/web/request/initCookie.ts b/src/web/request/initCookie.ts deleted file mode 100644 index d2f3dfd8..00000000 --- a/src/web/request/initCookie.ts +++ /dev/null @@ -1,50 +0,0 @@ -/** - * @file web request initCookie.ts - * @description 首次输入 cookie 后的一系列请求 - * @author BTMuli - * @since Alpha v0.1.5 - */ - -// utils -import TGSqlite from "../../plugins/Sqlite"; -// request -import { getCookieTokenBySToken } from "./getCookieToken"; -import { getTokensByLoginTicket } from "./getTokens"; -import { verifyLToken } from "./verifyLToken"; - -/** - * @description 根据输入 cookie 获取一堆 token - * @since Alpha v0.1.5 - * @param {string} ticket login_ticket - * @param {string} uid login_uid - * @returns {Promise} - */ -async function initCookie(ticket: string, uid: string): Promise { - const tokenRes = await getTokensByLoginTicket(ticket, uid); - const cookie: TGApp.BBS.Constant.Cookie = { - account_id: uid, - cookie_token: "", - login_ticket: ticket, - mid: "", - login_uid: uid, - ltoken: "", - ltuid: uid, - stoken: "", - stuid: uid, - }; - if (Array.isArray(tokenRes)) { - const lToken = tokenRes.find((item) => item.name === "ltoken"); - const sToken = tokenRes.find((item) => item.name === "stoken"); - if (lToken != null) cookie.ltoken = lToken.token; - if (sToken != null) cookie.stoken = sToken.token; - const cookieToken = await getCookieTokenBySToken(uid, cookie.stoken); - if (typeof cookieToken === "string") cookie.cookie_token = cookieToken; - const mid = await verifyLToken(cookie.ltoken, cookie.ltuid); - if (typeof mid === "string") cookie.mid = mid; - await TGSqlite.saveAppData("cookie", JSON.stringify(cookie)); - } else { - throw new Error("获取 token 失败"); - } -} - -export default initCookie;