152 lines
4.1 KiB
JavaScript
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;
|