pan-mini/unpackage/dist/dev/mp-weixin/utils/login.js

152 lines
4.1 KiB
JavaScript

"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;