UNPKG

@vestige06/medusa-auth-wechat

Version:

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

252 lines (194 loc) 6.61 kB
<p align="center"> <a href="https://www.medusajs.com"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg"> <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg"> <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg"> </picture> </a> </p> <h1 align="center"> Medusa 微信认证插件 </h1> <h4 align="center"> <a href="https://docs.medusajs.com">Documentation</a> | <a href="https://www.medusajs.com">Website</a> </h4> <p align="center"> Building blocks for digital commerce </p> <p align="center"> <a href="https://github.com/medusajs/medusa/blob/master/CONTRIBUTING.md"> <img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="PRs welcome!" /> </a> <a href="https://www.producthunt.com/posts/medusa"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Day-%23DA552E" alt="Product Hunt"></a> <a href="https://discord.gg/xpCwq3Kfn8"> <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" /> </a> <a href="https://twitter.com/intent/follow?screen_name=medusajs"> <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" /> </a> </p> ## 简介 这是一个为 Medusa 电商系统开发的微信小程序第三方登录认证插件。支持微信小程序的静默登录和授权登录,让用户可以通过微信账号快速登录你的电商应用。 ## 功能特性 - ✅ 微信小程序静默登录 - ✅ 微信小程序授权登录(获取用户信息) - ✅ 自动创建客户账户 - ✅ JWT Token 认证 - ✅ 完整的错误处理 - ✅ TypeScript 支持 - ✅ 单元测试 ## 兼容性 本插件兼容 Medusa v2.4.0 及以上版本。 ## 安装和配置 ### 1. 安装插件 ```bash npm install @vestige06/medusa-auth-wechat ``` ### 2. 环境变量配置 在你的 `.env` 文件中添加微信小程序配置: ```bash # 微信小程序配置 WECHAT_MINIPROGRAM_APP_ID=your_wechat_app_id WECHAT_MINIPROGRAM_APP_SECRET=your_wechat_app_secret ``` ### 3. Medusa 配置 在 `medusa-config.ts` 中配置认证模块: ```typescript import { defineConfig, Modules } from "@medusajs/framework/utils" module.exports = defineConfig({ projectConfig: { http: { authMethodsPerActor: { customer: ["emailpass", "wechat"], // 添加微信认证 }, }, }, modules: [ { resolve: "@medusajs/medusa/auth", options: { providers: [ { resolve: "@medusajs/medusa/auth-emailpass", id: "emailpass", }, { resolve: "@vestige06/medusa-auth-wechat", id: "wechat", options: { appId: process.env.WECHAT_MINIPROGRAM_APP_ID, appSecret: process.env.WECHAT_MINIPROGRAM_APP_SECRET, }, }, ], }, }, ], }) ``` ## 使用方法 ### 后端 API 插件会自动注册以下 API 端点: ``` POST /store/auth/wechat ``` 请求体: ```json { "code": "微信登录凭证", "userInfo": { "nickName": "用户昵称", "avatarUrl": "头像URL" } } ``` 响应: ```json { "success": true, "customer": { "id": "客户ID", "email": "wechat_openid@temp.com", "first_name": "用户昵称" }, "access_token": "JWT令牌", "message": "微信登录成功" } ``` ### 前端集成(微信小程序) 参考 `examples/wechat-miniprogram.js` 文件中的完整示例。 #### 静默登录 ```javascript const wechatAuth = require('./utils/wechat-auth') // 静默登录 const result = await wechatAuth.wechatSilentLogin() if (result.success) { console.log('登录成功', result.customer) } ``` #### 授权登录 ```javascript // 授权登录(获取用户信息) const result = await wechatAuth.wechatAuthLogin() if (result.success) { console.log('登录成功', result.customer) } ``` #### 发送认证请求 ```javascript // 使用 token 发送请求 const userInfo = await wechatAuth.authenticatedRequest('/store/customers/me') ``` ## 开发和测试 ### 运行测试 ```bash npm test ``` ### 构建插件 ```bash npm run build ``` ### 开发模式 ```bash npm run dev ``` ## 文件结构 ``` src/ ├── api/ │ └── store/ │ └── auth/ │ └── wechat/ │ └── route.ts # 微信认证 API 路由 ├── providers/ │ ├── wechat-auth.ts # 微信认证提供者 │ └── __tests__/ │ └── wechat-auth.test.ts # 单元测试 examples/ └── wechat-miniprogram.js # 前端使用示例 ``` ## 注意事项 1. **微信小程序配置**:确保在微信公众平台配置正确的服务器域名 2. **HTTPS 要求**:生产环境必须使用 HTTPS 3. **Token 安全**:妥善保管 JWT Token,建议设置合理的过期时间 4. **错误处理**:前端应该处理网络错误和认证失败的情况 ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! ## 支持 如果你在使用过程中遇到问题,可以: 1. 查看 [Medusa 官方文档](https://docs.medusajs.com) 2. 提交 [GitHub Issue](https://github.com/your-repo/issues) 3. 加入 [Medusa Discord 社区](https://discord.com/invite/medusajs) Learn more about [Medusa’s architecture](https://docs.medusajs.com/learn/introduction/architecture) and [commerce modules](https://docs.medusajs.com/learn/fundamentals/modules/commerce-modules) in the Docs. ## Community & Contributions The community and core team are available in [GitHub Discussions](https://github.com/medusajs/medusa/discussions), where you can ask for support, discuss roadmap, and share ideas. Join our [Discord server](https://discord.com/invite/medusajs) to meet other community members. ## Other channels - [GitHub Issues](https://github.com/medusajs/medusa/issues) - [Twitter](https://twitter.com/medusajs) - [LinkedIn](https://www.linkedin.com/company/medusajs) - [Medusa Blog](https://medusajs.com/blog/)