修改用户登陆认证流程
This commit is contained in:
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user