mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-04-22 21:59:49 +08:00
@@ -209,8 +209,6 @@ async function getTokenWeb(cookie: string): Promise<void> {
|
||||
});
|
||||
}
|
||||
signListener();
|
||||
emits("loadOuter", { show: false });
|
||||
// 检测cookie是否每项都有
|
||||
if (Object.values(cookieUser).some((i) => i === "")) {
|
||||
showSnackbar({
|
||||
text: "获取 cookie 失败!部分项为空!",
|
||||
@@ -220,10 +218,21 @@ async function getTokenWeb(cookie: string): Promise<void> {
|
||||
return;
|
||||
}
|
||||
await TGSqlite.saveAppData("cookie", JSON.stringify(cookieUser));
|
||||
showSnackbar({
|
||||
text: "登录成功!",
|
||||
color: "success",
|
||||
});
|
||||
const failCount = await refreshUserInfo();
|
||||
if (failCount > 0) {
|
||||
showSnackbar({
|
||||
color: "error",
|
||||
text: "获取用户信息失败!",
|
||||
});
|
||||
} else {
|
||||
showSnackbar({
|
||||
text: "登录成功!",
|
||||
color: "success",
|
||||
});
|
||||
appStore.isLogin = true;
|
||||
}
|
||||
loading.value = false;
|
||||
emits("loadOuter", { show: false });
|
||||
}
|
||||
|
||||
async function refreshUser() {
|
||||
@@ -298,42 +307,7 @@ async function refreshUser() {
|
||||
}
|
||||
userStore.cookie.value = ck;
|
||||
await TGSqlite.saveAppData("cookie", JSON.stringify(ck));
|
||||
emits("loadOuter", { show: true, title: "正在获取用户信息" });
|
||||
const infoRes = await TGRequest.User.byCookie.getUserInfo(ck.cookie_token, ck.account_id);
|
||||
if ("retcode" in infoRes) {
|
||||
emits("loadOuter", { show: true, title: "正在获取用户信息", text: "获取用户信息失败!" });
|
||||
await TGLogger.Error("[tc-userBadge][refreshUser] 获取用户信息失败");
|
||||
await TGLogger.Error(`[tc-userBadge][refreshUser] ${infoRes.retcode}: ${infoRes.message}`);
|
||||
failCount++;
|
||||
} else {
|
||||
emits("loadOuter", { show: true, title: "正在获取用户信息", text: "获取用户信息成功!" });
|
||||
const briefInfo: TGApp.App.Account.BriefInfo = {
|
||||
nickname: infoRes.nickname,
|
||||
uid: infoRes.uid,
|
||||
avatar: infoRes.avatar_url,
|
||||
desc: infoRes.introduce,
|
||||
};
|
||||
userStore.briefInfo.value = briefInfo;
|
||||
await TGSqlite.saveAppData("userInfo", JSON.stringify(briefInfo));
|
||||
await TGLogger.Info("[tc-userBadge][refreshUser] 获取用户信息成功");
|
||||
}
|
||||
emits("loadOuter", { show: true, title: "正在获取账号信息" });
|
||||
const accountRes = await TGRequest.User.byCookie.getAccounts(ck.cookie_token, ck.account_id);
|
||||
if (Array.isArray(accountRes)) {
|
||||
emits("loadOuter", { show: true, title: "正在获取账号信息", text: "获取账号信息成功!" });
|
||||
await TGLogger.Info("[tc-userBadge][refreshUser] 获取账号信息成功");
|
||||
await TGSqlite.saveAccount(accountRes);
|
||||
const curAccount = await TGSqlite.getCurAccount();
|
||||
if (curAccount) userStore.account.value = curAccount;
|
||||
} else {
|
||||
emits("loadOuter", { show: true, title: "正在获取账号信息", text: "获取账号信息失败!" });
|
||||
await TGLogger.Error("[tc-userBadge][refreshUser] 获取账号信息失败");
|
||||
await TGLogger.Error(
|
||||
`[tc-userBadge][refreshUser] ${accountRes.retcode}: ${accountRes.message}`,
|
||||
);
|
||||
failCount++;
|
||||
}
|
||||
loading.value = false;
|
||||
failCount = await refreshUserInfo();
|
||||
if (failCount > 0) {
|
||||
showSnackbar({
|
||||
color: "error",
|
||||
@@ -347,6 +321,55 @@ async function refreshUser() {
|
||||
emits("loadOuter", { show: false });
|
||||
}
|
||||
|
||||
async function refreshUserInfo(cnt: number = 0): Promise<number> {
|
||||
let failCount = cnt;
|
||||
const ck = userStore.cookie.value;
|
||||
if (ck === undefined) {
|
||||
showSnackbar({
|
||||
text: "未获取到用户 ck!",
|
||||
color: "error",
|
||||
});
|
||||
await TGLogger.Error("[tc-userBadge][refreshUserInfo] 未获取到用户 ck");
|
||||
return 0;
|
||||
}
|
||||
emits("loadOuter", { show: true, title: "正在获取用户信息" });
|
||||
const infoRes = await TGRequest.User.byCookie.getUserInfo(ck.cookie_token, ck.account_id);
|
||||
if ("retcode" in infoRes) {
|
||||
emits("loadOuter", { show: true, title: "正在获取用户信息", text: "获取用户信息失败!" });
|
||||
await TGLogger.Error("[tc-userBadge][refreshUserInfo] 获取用户信息失败");
|
||||
await TGLogger.Error(`[tc-userBadge][refreshUserInfo] ${infoRes.retcode}: ${infoRes.message}`);
|
||||
failCount++;
|
||||
} else {
|
||||
emits("loadOuter", { show: true, title: "正在获取用户信息", text: "获取用户信息成功!" });
|
||||
const briefInfo: TGApp.App.Account.BriefInfo = {
|
||||
nickname: infoRes.nickname,
|
||||
uid: infoRes.uid,
|
||||
avatar: infoRes.avatar_url,
|
||||
desc: infoRes.introduce,
|
||||
};
|
||||
userStore.briefInfo.value = briefInfo;
|
||||
await TGSqlite.saveAppData("userInfo", JSON.stringify(briefInfo));
|
||||
await TGLogger.Info("[tc-userBadge][refreshUserInfo] 获取用户信息成功");
|
||||
}
|
||||
emits("loadOuter", { show: true, title: "正在获取账号信息" });
|
||||
const accountRes = await TGRequest.User.byCookie.getAccounts(ck.cookie_token, ck.account_id);
|
||||
if (Array.isArray(accountRes)) {
|
||||
emits("loadOuter", { show: true, title: "正在获取账号信息", text: "获取账号信息成功!" });
|
||||
await TGLogger.Info("[tc-userBadge][refreshUserInfo] 获取账号信息成功");
|
||||
await TGSqlite.saveAccount(accountRes);
|
||||
const curAccount = await TGSqlite.getCurAccount();
|
||||
if (curAccount) userStore.account.value = curAccount;
|
||||
} else {
|
||||
emits("loadOuter", { show: true, title: "正在获取账号信息", text: "获取账号信息失败!" });
|
||||
await TGLogger.Error("[tc-userBadge][refreshUserInfo] 获取账号信息失败");
|
||||
await TGLogger.Error(
|
||||
`[tc-userBadge][refreshUserInfo] ${accountRes.retcode}: ${accountRes.message}`,
|
||||
);
|
||||
failCount++;
|
||||
}
|
||||
return failCount;
|
||||
}
|
||||
|
||||
async function confirmRefreshUser(): Promise<void> {
|
||||
const res = await showConfirm({
|
||||
title: "确认刷新用户信息吗?",
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<TOverlay v-model="visible" hide blur-val="20px" :to-click="onCancel">
|
||||
<div class="tog-box">
|
||||
<div class="tog-top">
|
||||
<div class="tog-title">请使用原神进行扫码操作</div>
|
||||
<div class="tog-subtitle">仅支持官服,渠道服请使用网页登录</div>
|
||||
<div class="tog-title">请使用米游社或原神进行操作</div>
|
||||
<div class="tog-subtitle">所需米游社版本 >= 2.57.1</div>
|
||||
</div>
|
||||
<div class="tog-mid">
|
||||
<qrcode-vue
|
||||
@@ -127,20 +127,28 @@ async function cycleGetData() {
|
||||
if (res.stat === "Confirmed") {
|
||||
clearInterval(cycleTimer);
|
||||
cycleTimer = null;
|
||||
if (res.payload.proto !== "OpenToken") {
|
||||
await TGLogger.Warn(`[to-gameLogin] 检测到非Combo协议:${res.payload.proto}`);
|
||||
if (res.payload.proto !== "OpenToken" && res.payload.proto !== "Account") {
|
||||
await TGLogger.Warn(`[to-gameLogin] 检测到意外协议:${res.payload.proto}`);
|
||||
showSnackbar({
|
||||
text: "请使用原神进行扫码操作",
|
||||
text: "请使用米游社或原神进行扫码操作",
|
||||
color: "error",
|
||||
});
|
||||
visible.value = false;
|
||||
return;
|
||||
}
|
||||
const data: TGApp.Plugins.Mys.GameLogin.StatusPayloadRaw = JSON.parse(res.payload.raw);
|
||||
cookie.account_id = data.open_id;
|
||||
cookie.ltuid = data.open_id;
|
||||
cookie.stuid = data.open_id;
|
||||
await getTokens(data.open_token);
|
||||
if (res.payload.proto === "OpenToken") {
|
||||
const data: TGApp.Plugins.Mys.GameLogin.StatusPayloadRawOpen = JSON.parse(res.payload.raw);
|
||||
cookie.account_id = data.open_id;
|
||||
cookie.ltuid = data.open_id;
|
||||
cookie.stuid = data.open_id;
|
||||
await getTokens(data.open_token);
|
||||
} else {
|
||||
const data: TGApp.Plugins.Mys.GameLogin.StatusPayloadRawAccount = JSON.parse(res.payload.raw);
|
||||
cookie.account_id = data.uid;
|
||||
cookie.ltuid = data.uid;
|
||||
cookie.stuid = data.uid;
|
||||
await getTokens(data.token, true);
|
||||
}
|
||||
showSnackbar({
|
||||
text: "登录成功",
|
||||
color: "success",
|
||||
@@ -152,8 +160,8 @@ async function cycleGetData() {
|
||||
}
|
||||
}
|
||||
|
||||
async function getTokens(game_token: string): Promise<void> {
|
||||
const stokenRes = await TGRequest.User.bgGameToken.getStoken(cookie.account_id, game_token);
|
||||
async function getTokens(game_token: string, isGT: boolean = false): Promise<void> {
|
||||
const stokenRes = await TGRequest.User.bgGameToken.getStoken(cookie.account_id, game_token, isGT);
|
||||
if (!("retcode" in stokenRes)) {
|
||||
cookie.stoken = stokenRes.token.token;
|
||||
cookie.mid = stokenRes.user_info.mid;
|
||||
|
||||
Reference in New Issue
Block a user