feat(auth): 添加微信小程序授权登录功能

This commit is contained in:
Ray.Hao
2025-12-29 08:05:49 +08:00
parent 703171a2d8
commit 3006cba16e
3 changed files with 34 additions and 13 deletions

View File

@@ -30,18 +30,23 @@ const AuthAPI = {
* @returns 登录结果
*/
login(data: LoginData): Promise<LoginResult> {
const formData = {
username: data.username,
password: data.password,
};
return publicRequest<LoginResult>({
url: `${AUTH_BASE_URL}/login`,
method: "POST",
data: formData,
header: {
"Content-Type": "application/x-www-form-urlencoded",
},
data: data, // 发送JSON格式的请求体
});
},
/**
* 微信Web授权登录 (使用code进行授权登录)
* @param code 微信授权码
* @returns 登录结果
*/
loginByWechat(code: string): Promise<LoginResult> {
return publicRequest<LoginResult>({
url: `${AUTH_BASE_URL}/login/wechat`,
method: "POST",
data: { code },
});
},

View File

@@ -257,8 +257,8 @@ const handleWechatLogin = async () => {
// 获取微信登录的临时 code
const code = await getLoginCode();
// 尝试使用微信授权登录接口
const result: any = await userStore.loginWithWxCode(code);
// 在微信小程序环境下,使用小程序授权登录接口
const result: any = await userStore.loginWithWxMiniAppCode(code);
// 获取用户信息
await userStore.getInfo();

View File

@@ -24,8 +24,23 @@ export const useUserStore = defineStore("user", () => {
});
};
// 微信基础授权登录
// 微信Web授权登录
const loginWithWxCode = (code: string) => {
return new Promise((resolve, reject) => {
AuthAPI.loginByWechat(code)
.then((data) => {
setAccessToken(data.accessToken);
resolve(data);
})
.catch((error: any) => {
console.error("微信授权登录失败", error);
reject(error);
});
});
};
// 微信小程序授权登录 (仅使用code获取OpenID)
const loginWithWxMiniAppCode = (code: string) => {
return new Promise((resolve, reject) => {
AuthAPI.loginByWxMiniAppCode(code)
.then((data) => {
@@ -33,7 +48,7 @@ export const useUserStore = defineStore("user", () => {
resolve(data);
})
.catch((error: any) => {
console.error("微信授权登录失败", error);
console.error("微信小程序授权登录失败", error);
reject(error);
});
});
@@ -112,6 +127,7 @@ export const useUserStore = defineStore("user", () => {
userInfo,
login,
loginWithWxCode,
loginWithWxMiniAppCode,
loginWithWxPhone,
logout,
getInfo,