Files
wechat-article-exporter/server/api/web/mp/info.get.ts
2026-02-24 16:42:51 +08:00

47 lines
1.4 KiB
TypeScript

/**
* 获取登录用户信息接口
*
* 备注:
* 这个接口用于后端登录成功之后调用,非客户端直接调用
*/
import { getTokenFromStore } from '~/server/utils/CookieStore';
import { proxyMpRequest } from '~/server/utils/proxy-request';
export default defineEventHandler(async event => {
const token = await getTokenFromStore(event);
if (!token) {
return { nick_name: '', head_img: '', error: '未登录或登录已过期,请重新扫码登录' };
}
const html: string = await proxyMpRequest({
event: event,
method: 'GET',
endpoint: 'https://mp.weixin.qq.com/cgi-bin/home',
query: {
t: 'home/index',
token: token,
lang: 'zh_CN',
},
}).then(resp => resp.text());
// 提取昵称
let nick_name = '';
const nicknameMatchResult = html.match(/wx\.cgiData\.nick_name\s*?=\s*?"(?<nick_name>[^"]+)"/);
if (nicknameMatchResult && nicknameMatchResult.groups && nicknameMatchResult.groups.nick_name) {
nick_name = nicknameMatchResult.groups.nick_name;
}
// 提取头像
let head_img = '';
const headImgMatchResult = html.match(/wx\.cgiData\.head_img\s*?=\s*?"(?<head_img>[^"]+)"/);
if (headImgMatchResult && headImgMatchResult.groups && headImgMatchResult.groups.head_img) {
head_img = headImgMatchResult.groups.head_img;
}
return {
nick_name: nick_name,
head_img: head_img,
};
});