feat(auth): ✨ 添加微信小程序授权登录功能
This commit is contained in:
@@ -30,18 +30,23 @@ const AuthAPI = {
|
|||||||
* @returns 登录结果
|
* @returns 登录结果
|
||||||
*/
|
*/
|
||||||
login(data: LoginData): Promise<LoginResult> {
|
login(data: LoginData): Promise<LoginResult> {
|
||||||
const formData = {
|
|
||||||
username: data.username,
|
|
||||||
password: data.password,
|
|
||||||
};
|
|
||||||
|
|
||||||
return publicRequest<LoginResult>({
|
return publicRequest<LoginResult>({
|
||||||
url: `${AUTH_BASE_URL}/login`,
|
url: `${AUTH_BASE_URL}/login`,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
data: formData,
|
data: data, // 发送JSON格式的请求体
|
||||||
header: {
|
});
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信Web授权登录 (使用code进行授权登录)
|
||||||
|
* @param code 微信授权码
|
||||||
|
* @returns 登录结果
|
||||||
|
*/
|
||||||
|
loginByWechat(code: string): Promise<LoginResult> {
|
||||||
|
return publicRequest<LoginResult>({
|
||||||
|
url: `${AUTH_BASE_URL}/login/wechat`,
|
||||||
|
method: "POST",
|
||||||
|
data: { code },
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -257,8 +257,8 @@ const handleWechatLogin = async () => {
|
|||||||
// 获取微信登录的临时 code
|
// 获取微信登录的临时 code
|
||||||
const code = await getLoginCode();
|
const code = await getLoginCode();
|
||||||
|
|
||||||
// 尝试使用微信授权登录接口
|
// 在微信小程序环境下,使用小程序授权登录接口
|
||||||
const result: any = await userStore.loginWithWxCode(code);
|
const result: any = await userStore.loginWithWxMiniAppCode(code);
|
||||||
|
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
await userStore.getInfo();
|
await userStore.getInfo();
|
||||||
|
|||||||
@@ -24,8 +24,23 @@ export const useUserStore = defineStore("user", () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// 微信基础授权登录
|
// 微信Web授权登录
|
||||||
const loginWithWxCode = (code: string) => {
|
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) => {
|
return new Promise((resolve, reject) => {
|
||||||
AuthAPI.loginByWxMiniAppCode(code)
|
AuthAPI.loginByWxMiniAppCode(code)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
@@ -33,7 +48,7 @@ export const useUserStore = defineStore("user", () => {
|
|||||||
resolve(data);
|
resolve(data);
|
||||||
})
|
})
|
||||||
.catch((error: any) => {
|
.catch((error: any) => {
|
||||||
console.error("微信授权登录失败", error);
|
console.error("微信小程序授权登录失败", error);
|
||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -112,6 +127,7 @@ export const useUserStore = defineStore("user", () => {
|
|||||||
userInfo,
|
userInfo,
|
||||||
login,
|
login,
|
||||||
loginWithWxCode,
|
loginWithWxCode,
|
||||||
|
loginWithWxMiniAppCode,
|
||||||
loginWithWxPhone,
|
loginWithWxPhone,
|
||||||
logout,
|
logout,
|
||||||
getInfo,
|
getInfo,
|
||||||
|
|||||||
Reference in New Issue
Block a user