@next-auth-oauth/wechatmp
Version:
基于Auth.js的微信公众号验证码登录、二维码扫描登录插件
99 lines (98 loc) • 2.88 kB
TypeScript
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>;
}