UNPKG

@vestige06/medusa-auth-wechat

Version:

Medusa 微信小程序第三方登录认证插件

94 lines 5.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WechatAuthProvider = void 0; const utils_1 = require("@medusajs/framework/utils"); /** * 微信认证提供者服务 */ class WechatAuthProvider { constructor(options) { this.options_ = options; } /** * 认证方法 * @param data 认证输入数据 * @returns 认证响应 */ async authenticate(data) { try { const authData = data.body; if (!authData.code) { return { success: false, error: "缺少微信登录凭证" }; } // 使用 code 换取 session_key 和 openid const sessionData = await this.getWechatSession(authData.code); if (!sessionData.openid) { return { success: false, error: sessionData.errmsg || "获取微信用户信息失败" }; } // 构建认证身份 const authIdentity = { entity_id: sessionData.openid, user_metadata: { openid: sessionData.openid, unionid: sessionData.unionid, session_key: sessionData.session_key, userInfo: authData.userInfo, }, app_metadata: { provider: "wechat", created_at: new Date().toISOString(), } }; return { success: true, authIdentity }; } catch (error) { console.error("微信认证失败:", error); return { success: false, error: "认证过程中发生错误" }; } } /** * 获取微信 session 信息 * @param code 微信登录凭证 * @returns 微信 session 响应 */ async getWechatSession(code) { const url = new URL("https://api.weixin.qq.com/sns/jscode2session"); url.searchParams.set("appid", this.options_.appId); url.searchParams.set("secret", this.options_.appSecret); url.searchParams.set("js_code", code); url.searchParams.set("grant_type", "authorization_code"); const response = await fetch(url.toString()); if (!response.ok) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `微信 API 请求失败: ${response.status}`); } return response.json(); } /** * 验证认证状态 * @param data 验证数据 * @returns 验证结果 */ async validateCallback(data) { // 微信小程序通常不需要回调验证,直接返回成功 const response = { success: true, authIdentity: undefined }; return response; } } exports.WechatAuthProvider = WechatAuthProvider; exports.default = WechatAuthProvider; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VjaGF0LWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3dlY2hhdC1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQTZCdkQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUc3QixZQUFZLE9BQTBCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUF5QjtRQUMxQyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBdUIsQ0FBQTtZQUU3QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPO29CQUNMLE9BQU8sRUFBRSxLQUFLO29CQUNkLEtBQUssRUFBRSxVQUFVO2lCQUNsQixDQUFBO1lBQ0gsQ0FBQztZQUVELGtDQUFrQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFFOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sSUFBSSxZQUFZO2lCQUMxQyxDQUFBO1lBQ0gsQ0FBQztZQUVELFNBQVM7WUFDVCxNQUFNLFlBQVksR0FBRztnQkFDbkIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxNQUFNO2dCQUM3QixhQUFhLEVBQUU7b0JBQ2IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO29CQUMxQixPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87b0JBQzVCLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVztvQkFDcEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2lCQUM1QjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtpQkFDckM7YUFDRixDQUFBO1lBRUQsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixZQUFZO2FBQ2IsQ0FBQTtRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDL0IsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsV0FBVzthQUNuQixDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQVk7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsOENBQThDLENBQUMsQ0FBQTtRQUNuRSxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsRCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN2RCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDckMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLENBQUE7UUFFeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLGdCQUFnQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQ2xDLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBeUI7UUFDOUMsd0JBQXdCO1FBQ3hCLE1BQU0sUUFBUSxHQUEyQjtZQUN2QyxPQUFPLEVBQUUsSUFBSTtZQUNiLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUE7UUFDRCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0NBQ0Y7QUFsR0QsZ0RBa0dDO0FBRUQsa0JBQWUsa0JBQWtCLENBQUEifQ==