修改用户登陆认证流程

This commit is contained in:
张成
2025-11-16 23:55:49 +08:00
parent 5f8fb9b1b3
commit abbfc27479
12 changed files with 229 additions and 99 deletions

View File

@@ -420,3 +420,93 @@ export const unFollowUser = async (following_id) => {
throw error;
}
};
// 静默登录锁,防止并发调用
let silentLoginPromise: Promise<LoginResponse> | null = null;
// 静默登录只获取用户ID和token不需要手机号
export const silentLogin = async (): Promise<LoginResponse> => {
// 如果已经有正在进行的静默登录,直接返回该 Promise
if (silentLoginPromise) {
console.log('静默登录正在进行中,等待结果...');
return silentLoginPromise;
}
// 先检查是否已经登录
if (check_login_status()) {
console.log('已登录,跳过静默登录');
return {
success: true,
message: "已登录",
token: get_user_token() || undefined,
user_info: get_user_info() || undefined,
};
}
// 创建静默登录 Promise
silentLoginPromise = (async (): Promise<LoginResponse> => {
try {
console.log('开始执行静默登录...');
// 调用微信登录获取code
const login_result = await Taro.login();
console.log('微信登录结果:', login_result);
if (!login_result.code) {
console.error('微信登录失败未获取到code');
return {
success: false,
message: "微信登录失败",
};
}
// 调用微信授权接口,不传 phone_code静默登录
console.log('调用后端接口进行静默登录...');
const auth_response = await httpService.post("user/wx_auth", {
code: login_result.code,
// 不传 phone_code实现静默登录
}, {
showLoading: false, // 静默登录不显示loading
});
console.log('后端接口响应:', auth_response);
if (auth_response.code === 0) {
const token = auth_response.data?.token || "";
const user_info = auth_response.data?.userInfo;
// 保存登录状态
if (token && user_info) {
console.log('保存登录状态...');
save_login_state(token, user_info);
console.log('静默登录成功,已保存登录状态');
} else {
console.warn('静默登录成功但token或user_info为空');
}
return {
success: true,
message: "静默登录成功",
token,
user_info,
};
} else {
console.error('静默登录失败:', auth_response.message);
return {
success: false,
message: auth_response.message || "静默登录失败",
};
}
} catch (error) {
console.error("静默登录异常:", error);
return {
success: false,
message: "静默登录失败,请重试",
};
} finally {
// 清除锁,允许下次调用
silentLoginPromise = null;
}
})();
return silentLoginPromise;
};