微信小程序连接腾讯云Node.js后端需要做哪些配置?

微信小程序连接腾讯云 Node.js 后端,核心在于网络互通身份认证安全配置。以下是需要完成的关键配置步骤:


一、基础环境准备

  1. 注册并登录腾讯云控制台

    • 开通「云开发」(CloudBase)或自建云服务器(如 CVM)。
    • 若使用云开发(推荐新手),可直接在小程序后台绑定云开发环境;若自建 Node.js 服务(如部署在 CVM/容器服务),需自行搭建。
  2. 创建/获取 AppID

    • 确保你的微信小程序已申请正式 AppID(测试号也可用于开发,但功能受限)。

二、网络与域名配置(关键!)

✅ 方案 A:使用腾讯云云开发(CloudBase)

  • 无需手动配置域名,云函数自动支持 HTTPS。
  • 只需在小程序端调用 wx.cloud.callFunction() 即可。
  • 优势:免运维、自动鉴权、内置数据库。

✅ 方案 B:自建 Node.js 后端(CVM / TKE / SCF)

需完成以下配置:

配置项 操作说明
1. 服务器 HTTPS 必须部署 HTTPS(微信强制要求)。可使用 Nginx + Let’s Encrypt 免费证书,或购买 SSL 证书。
2. 域名备案 若域名在中国大陆,需在工信部完成 ICP 备案(icp.beian.miit.gov.cn)。未备案域名无法被微信允许访问。
3. 添加业务域名 登录 微信公众平台 → 开发 → 开发管理 → 开发设置 → 服务器域名 → 添加:
request合法域名
socket合法域名(如需 WebSocket)
• 格式:https://your-domain.com不可用 IP 地址
4. 开放端口 & 安全组 云服务器安全组放行 443(HTTPS)端口;防火墙规则允许该域名 IP 访问。

⚠️ 注意:开发阶段可用“本地调试”模式绕过域名限制(见下文),但发布前必须完成上述配置。


三、身份认证与安全

1. 用户登录态传递

  • 前端调用 wx.login() 获取临时 code。
  • 将 code 发送给后端,后端通过 auth.code2Session(code) 换取 openid + session_key。
  • 推荐使用 JWT 或自定义 token 机制维持会话(避免每次请求传 code)。

2. 接口鉴权

  • 所有敏感接口需校验用户身份(如检查 JWT 是否有效、签名是否正确)。
  • 可结合腾讯云 CAM(访问控制)对 API 做更细粒度权限管理。

3. 防重放攻击 & 数据加密

  • 重要操作建议加入时间戳 + nonce + 签名验证。
  • 敏感数据(如手机号、X_X)传输时启用 TLS 1.2+,必要时应用层二次加密。

四、Node.js 后端示例(Express + 云开发 SDK / 自研)

// 示例:Express 接收 wx.login 的 code
app.post('/api/login', async (req, res) => {
  const { code } = req.body;

  // 调用微信接口换 session_key
  const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${APPSECRET}&js_code=${code}&grant_type=authorization_code`;
  const result = await axios.get(url);
  const { openid, session_key } = result.data;

  // 生成自定义 token(可选)
  const token = jwt.sign({ openid }, process.env.JWT_SECRET, { expiresIn: '7d' });

  res.json({ success: true, token, openid });
});

🔐 环境变量中存储 APPIDAPPSECRETJWT_SECRET切勿硬编码


五、开发与调试技巧

场景 方法
本地开发不配域名 微信开发者工具 → 详情 → 本地设置 → 勾选「不校验合法域名」⚠️ 仅开发可用,发布必关
测试 HTTPS curl -v https://your-domain.com/api/test 验证证书有效性
日志监控 开启 CloudWatch / 云函数日志 / Nginx access.log 分析请求失败原因

六、常见错误排查

错误现象 可能原因 解决方案
request:fail url not in domain list 域名未加白名单 检查微信公众平台「服务器域名」配置
SSL certificate problem 证书过期/无效 更新证书,确保证书链完整
login failed code 失效/重复使用 code 仅一次有效,立即交换 session
403 Forbidden 缺少鉴权头 检查 Authorization 字段格式(如 Bearer xxx

需要我提供:

  • 完整的 Express + MySQL + JWT 项目模板?
  • 云开发(CloudBase)一键部署指南?
  • 如何配置 Nginx 反向X_X + HTTPS?

欢迎告诉我你的技术栈偏好,我可以给出针对性方案。