feat: 调整了登录的逻辑

This commit is contained in:
2026-05-12 21:17:11 +08:00
parent f0b6e86e64
commit 0f6d8f7ff1
7 changed files with 200 additions and 120 deletions

View File

@@ -1,12 +1,12 @@
import { oauthToken, bindUserPhone } from "../request/api/LoginApi";
import { clientId } from "@/constant/base";
import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant";
import { removeAccessToken, setAccessToken } from "../constant/token";
import { removeAccessToken, setAccessToken, getRefreshToken, setRefreshToken, getAccessToken } from "../constant/token";
const loginAuth = (e) => {
const authLogin = (e) => {
removeAccessToken();
// 条件编译微信小程序、抖音小程序、APP-PLUS包含iOS和Android
// 条件编译微信小程序、抖音小程序
let provider = "weixin";
let grant_type = "wechat";
@@ -20,6 +20,58 @@ const loginAuth = (e) => {
grant_type = "toutiao";
// #endif
return new Promise(async (resolve, reject) => {
uni.login({
provider,
onlyAuthorize: true,
success: async (loginRes) => {
console.log("Authorize success: ", JSON.stringify(loginRes));
const openIdCode = loginRes.code;
console.log("authLogin获取到的授权code:", openIdCode);
if (!openIdCode) {
console.warn("authLogin未获取到授权 code");
reject("authLogin未获取到授权code");
return;
}
const params = {
openIdCode: [openIdCode],
grant_type: grant_type,
clientId: clientId,
scope: "server",
};
console.log("authLogin获取到的授权params:", JSON.stringify(params));
await loginRequest(params)
.then(() => {
resolve(false);
})
.catch((err) => {
reject(err);
});
},
fail: (err) => {
reject("authLogin登录失败");
},
});
});
};
const refreshAuthLogin = () => {
let provider = "weixin";
let grant_type = "wechat";
// #ifdef MP-WEIXIN
provider = "weixin";
grant_type = "wechat";
// #endif
// #ifdef MP-TOUTIAO
provider = "toutiao";
grant_type = "toutiao";
// #endif
// #ifdef APP-PLUS
const systemInfo = uni.getSystemInfoSync();
if (systemInfo.platform === "ios") {
@@ -27,22 +79,21 @@ const loginAuth = (e) => {
grant_type = "apple";
}
// #endif
return new Promise(async (resolve, reject) => {
uni.login({
provider,
onlyAuthorize: true,
success: async (loginRes) => {
console.log("Authorize success: ", JSON.stringify(loginRes));
const openIdCode =
provider === "apple"
? loginRes.appleInfo && loginRes.appleInfo.identityToken
: loginRes.code;
console.log("获取到的授权code:", openIdCode);
console.log("refreshAuthLogin获取到的授权code:", openIdCode);
if (!openIdCode) {
console.warn("refreshToken 未获取到登录 code");
reject("refreshToken 未获取到登录 code");
console.warn("refreshAuthLogin未获取到授权code");
reject("refreshAuthLogin未获取到授权code");
return;
}
@@ -51,37 +102,67 @@ const loginAuth = (e) => {
clientId: clientId,
scope: "server",
};
if (provider === "apple") {
params.identityToken = openIdCode;
} else {
params.openIdCode = [openIdCode];
}
console.log("获取到的授权params:", JSON.stringify(params));
const response = await oauthToken(params);
if (response.access_token) {
setAccessToken(response.access_token);
resolve();
} else {
reject(response.message || "登录失败");
}
console.log("refreshAuthLogin获取到的授权params:", JSON.stringify(params));
await loginRequest(params)
.then(() => {
resolve();
})
.catch((err) => {
reject(err);
});
},
fail: (err) => {
reject("登录失败");
console.warn("refreshAuthLogin fail:", err);
reject("refreshAuthLogin登录失败");
},
});
});
};
const bindPhone = async (params) => {
try {
const response = await bindUserPhone(params);
return response;
} catch (error) {
throw error;
/// 检查刷新 token 是否有效
const checkRefreshToken = async () => {
const token = getRefreshToken();
if (token) {
await refreshTokenRequest(token);
}
};
}
export { loginAuth, bindPhone };
/// 刷新 token 的函数
const refreshTokenRequest = async (token) => {
const params = {
grant_type: 'refresh_token',
refresh_token: token,
clientId: clientId,
scope: "server",
};
const response = await oauthToken(params);
if (response.refresh_token && response.access_token) {
setRefreshToken(response.refresh_token);
setAccessToken(response.access_token);
return true;
} else {
return false;
}
}
/// 重新登录的函数
const loginRequest = async (params) => {
const response = await oauthToken(params);
if (response.access_token) {
setAccessToken(response.access_token);
setRefreshToken(response.refresh_token);
return true;
} else {
throw new Error(response.message || "登录失败");
}
}
export { authLogin, refreshAuthLogin, checkRefreshToken };