"use strict"; const common_vendor = require("../common/vendor.js"); const utils_config = require("./config.js"); const LOGIN_API = "/third-user/program/login"; function getLoginUrl() { console.log("------login url------:", utils_config.BASE_URL); return utils_config.BASE_URL + LOGIN_API; } const silentLogin = async () => { try { const token = getLocalToken(); if (token) { return token; } console.log("静默登录", token); let data; if (utils_config.PLATFORM === "mp-weixin") { data = await wxSilentLogin(); } if (data) { console.log("静默登录-----", data.token); saveLocalToken(data.token); saveUserInfo(data.user); common_vendor.index.$emit("LOGIN_SUCCESS", { token: data.token }); return data.token; } throw new Error("静默登录失败"); } catch (error) { console.error("静默登录失败:", error); throw error; } }; const wxSilentLogin = async () => { try { const loginRes = await new Promise((resolve, reject) => { common_vendor.index.login({ provider: "weixin", success: resolve, fail: reject }); }); const accountInfo = common_vendor.index.getAccountInfoSync(); const appId = accountInfo.miniProgram.appId; const response = await new Promise((resolve, reject) => { common_vendor.index.request({ url: getLoginUrl(), method: "POST", data: { appid: appId, code: loginRes.code }, success: (res) => { if (res.statusCode === 200) { console.log("login success", res); resolve(res.data); } else { reject(new Error(`请求失败: ${res.statusCode}`)); } }, fail: reject }); }); if (response.code === 200) { return response.data; } throw new Error(response.msg || "微信登录失败"); } catch (error) { console.error("微信静默登录失败:", error); throw error; } }; const ksSilentLogin = async () => { try { const loginRes = await new Promise((resolve, reject) => { common_vendor.index.login({ provider: "kuaishou", success: resolve, fail: reject }); }); let url = getLoginUrl(); console.log("login:", url); console.log("ksSilentLogin------", loginRes); const accountInfo = common_vendor.index.getAccountInfoSync(); const appId = accountInfo.miniProgram.appId; console.log("appid:", appId); const res = await new Promise((resolve, reject) => { common_vendor.index.request({ url: getLoginUrl(), method: "POST", data: { appid: appId, code: loginRes.code }, success: (res2) => { if (res2.statusCode === 200) { console.log("login success", res2); resolve(res2.data); } else { reject(new Error(`请求失败: ${res2.statusCode}`)); } }, fail: reject }); }); if (res.code === 0) { return res.data; } throw new Error(res.msg || "快手登录失败"); } catch (error) { console.error("快手静默登录失败:", error); throw error; } }; const getLocalToken = () => { const tokenKey = "wx_token"; return common_vendor.index.getStorageSync(tokenKey); }; const saveLocalToken = (token) => { const tokenKey = "wx_token"; common_vendor.index.setStorageSync(tokenKey, token); }; const saveUserInfo = (user) => { common_vendor.index.setStorageSync("user-info", user); }; const checkLoginStatus = async () => { try { const token = getLocalToken(); if (!token) return false; console.log("tokenInfo:", token); return true; } catch (error) { return false; } }; const initLogin = async () => { try { console.log("初始化登录 开始。。。"); const isLoggedIn = await checkLoginStatus(); if (!isLoggedIn) { await silentLogin(); } return true; } catch (error) { console.error("初始化登录失败:", error); return false; } }; exports.checkLoginStatus = checkLoginStatus; exports.initLogin = initLogin;