From 05f037383436cd0e30a6a12e7a4e08bf5b884ea8 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Thu, 27 Mar 2025 10:58:59 +0800 Subject: [PATCH] feat: add query by login web wechat --- src/query-login.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/query-login.ts b/src/query-login.ts index ab3b725..4af2a1e 100644 --- a/src/query-login.ts +++ b/src/query-login.ts @@ -86,6 +86,32 @@ export class QueryLogin { } return res; } + async loginByWechat(data: { code: string }) { + const res = await this.post({ path: 'wx', key: 'open-login', code: data.code }); + if (res.code === 200) { + const { accessToken, refreshToken } = res?.data || {}; + this.storage.setItem('token', accessToken || ''); + await this.beforeSetLoginUser({ accessToken, refreshToken }); + } + return res; + } + /** + * 检测微信登录,登陆成功后,调用onSuccess,否则调用onError + * @param param0 + */ + async checkWechat({ onSuccess, onError }: { onSuccess?: (res: QueryLoginResult) => void; onError?: (res: any) => void }) { + const url = new URL(window.location.href); + const code = url.searchParams.get('code'); + const state = url.searchParams.get('state'); + if (code && state) { + const res = await this.loginByWechat({ code }); + if (res.code === 200) { + onSuccess?.(res.data); + } else { + onError?.(res); + } + } + } /** * 登陆成功,需要获取用户信息进行缓存 * @param param0 @@ -177,7 +203,7 @@ export class QueryLogin { /** * 一个简单的401处理, 如果401,则刷新token, 如果refreshToken不存在,则返回401 * refetch 是否重新请求, 会有bug,无限循环,按需要使用 - * TODO: + * TODO: * @param response * @param ctx * @param opts