UNPKG

@next-auth-oauth/wechatmp

Version:

基于Auth.js的微信公众号验证码登录、二维码扫描登录插件

99 lines (98 loc) 2.88 kB
import type { CaptchaManager } from './lib/CaptchaManager'; /** * 微信公众号登录管理器配置接口 */ export interface WechatMpLoginManagerConfig { /** 微信公众号的AppID */ appId: string; /** 微信公众号的AppSecret */ appSecret: string; /** 用于验证消息的Token */ token: string; /** 消息加解密密钥,可选 */ aesKey?: string; /** * 验证类型 "MESSAGE"|"QRCODE" * - MESSAGE 回复消息 * - QRCODE 临时二维码 * - 默认使用环境变量 AUTH_WECHATMP_CHECKTYPE * @default "MESSAGE" */ checkType?: 'QRCODE' | 'MESSAGE'; /** * ### 一般为**公众号关注二维码** * ##### 用于引导用户扫码关注公众号后,方便发送验证码 * ##### 当checkType为MESSAGE时必须配置此参数 */ qrcodeImageUrl?: string; /** * 指定的API端点 * @default /api/auth/wechatmp */ endpoint?: string; /** 验证码管理器,用于处理验证码相关操作 */ captchaManager: CaptchaManager<{ openid: string; unionid?: string; }>; } /** * 微信公众号登录管理器 * 用于处理微信公众号登录流程,包括二维码生成、验证码管理、消息处理等 * 支持二维码扫描和消息验证两种登录方式 */ export declare class WechatMpLoginManager { private wechatMpApi; private captchaManager; private checkType; private qrcodeImageUrl?; private messageServicde; private endpoint; constructor(config: WechatMpLoginManagerConfig); /** * 创建验证码 * @returns {Promise<string>} 生成的验证码 */ createCaptcha(): Promise<string>; /** * 验证验证码并绑定openid * @param {string} openid 用户的openid * @param {string} captcha 用户输入的验证码 * @returns {Promise<boolean>} 验证结果 */ verifyCaptcha(openid: string, captcha: string): Promise<boolean>; /** * 渲染关注二维码HTML页面 * @returns {string} 渲染后的HTML */ private qrcodeAction; /** * 处理next-auth的token请求,返回openid * @param request * @returns */ private tokenAction; /** * 二维码页面,轮训获取openid * @param request * @returns */ private checkAction; /** * 处理微信消息(webhook) * @param {any} message 微信消息内容 * @returns {Promise<void>} */ handleWechatMessage(request: Request): Promise<Response>; /** * 适配NextAuth的authorization页面 * @param {string} captcha 验证码 * @returns {string} 回调URL */ getAuthorizationUrl(captcha: string): string; /** * 暴露给nextjs的处理函数 * @param request * @returns */ handle(request: Request): Promise<Response>; }