import { oauthToken, checkUserPhone } from "@/request/api/LoginApi"; import { loginAuth, bindPhone } from "@/manager/LoginManager"; import { clientId } from "@/constant/base"; import { getAccessToken, removeAccessToken, setAccessToken } from "../constant/token"; import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant"; // 跳转登录 export const goLogin = () => uni.navigateTo({ url: "/pages/login/index" }); // 登录成功后,返回上一页 export const goBack = () => uni.navigateBack({ delta: 1 }); // 登录逻辑 export const onLogin = async (e) => { console.info("onLogin code: ", e); return new Promise(async (resolve, reject) => { // 判断用户拒绝 if (e !== undefined && e && e.detail && e.detail.errno === 104) { reject(); return; } await loginAuth(e).then(async () => { console.log("loginAuth resolve success"); // 检查手机号是否绑定 const checkRes = await checkUserPhone(); if (checkRes.data) { resolve(); return; } if (e === undefined) { resolve(); return; } const { code } = e.detail; // 绑定手机号 const params = { wechatPhoneCode: code, clientId: clientId }; const res = await bindPhone(params); if (res.data) { // 登录成功后,触发登录成功事件 uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS); resolve(); } else { console.log("绑定手机号失败"); removeAccessToken(); reject(); } }); }); }; // 检测token export const checkToken = () => { const token = getAccessToken(); return new Promise((resolve) => { if (!token) { goLogin(); return; } resolve(); }); }; // 刷新token export const refreshToken = () => { return new Promise(async (resolve) => { uni.login({ provider: "weixin", //使用微信登录 success: async ({ code }) => { console.log("进入 refreshToken success", code); const params = { openIdCode: [code], grant_type: "wechat", scope: "server", clientId: clientId, }; console.log("获取到的微信授权params:", JSON.stringify(params)); const response = await oauthToken(params); if (response.access_token) { setAccessToken(response.access_token); const checkRes = await checkUserPhone({ token: response.access_token, }); if (checkRes.data) { // 登录成功后,触发登录成功事件 uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS); resolve(false); } else { resolve(true); } } }, }); }); };