腾讯云服务器对接微信小程序是一个常见的开发需求,通常用于为小程序提供后端服务(如数据存储、用户登录、接口调用等)。以下是完整的对接流程和关键点:
一、准备工作
1. 注册与开通
- 微信小程序账号:微信公众平台
- 腾讯云账号:腾讯云官网
- 域名备案:如果使用了X_X域名访问,必须完成 ICP 备案。
2. 配置服务器域名白名单
在微信公众平台中设置合法的服务器域名(请求地址):
- 登录 微信公众平台
- 进入【开发管理】→【开发设置】→【服务器域名】
- 添加
request合法域名,例如:https://api.yourdomain.com
注意:只能使用 HTTPS 协议,且不能带端口号(除非是测试环境)
二、腾讯云服务器配置
1. 购买服务器
- 推荐使用 腾讯云 CVM(云服务器)
- 操作系统建议选择 Linux(如 CentOS / Ubuntu)
2. 安装运行环境
根据你的项目选择语言/框架:
- Node.js + Express/Koa
- Python + Flask/Django
- PHP + Nginx/Apache
- Java + Tomcat/Spring Boot
3. 域名绑定 & SSL 证书
- 在腾讯云申请免费或付费 SSL 证书并部署到服务器
- 使用 Nginx 或 Apache 配置 HTTPS 访问
示例 Nginx 配置片段:
server {
listen 443 ssl;
server_name api.yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost:3000; # 后端服务监听端口
}
}
三、微信小程序请求服务器
1. 小程序发起网络请求
使用 wx.request() 发起 HTTPS 请求:
wx.request({
url: 'https://api.yourdomain.com/api/login',
method: 'POST',
data: {
code: loginCode
},
success(res) {
console.log('服务器返回:', res.data);
}
});
2. 用户登录流程(推荐使用)
- 小程序获取
code→ 发送给服务器 - 服务器通过 code 换取 openid 和 session_key(通过微信官方接口)
- 服务器生成自定义 token 并返回给小程序
- 小程序后续请求携带 token 认证
示例代码(Node.js 后端):
const axios = require('axios');
app.post('/login', async (req, res) => {
const { code } = req.body;
const appId = 'your_appid';
const secret = 'your_secret';
const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${secret}&js_code=${code}&grant_type=authorization_code`;
try {
const response = await axios.get(url);
// 返回 openid 等信息
res.json(response.data);
} catch (err) {
res.status(500).json({ error: 'Login failed' });
}
});
四、安全与注意事项
1. 必须使用 HTTPS
微信小程序只允许 HTTPS 请求,否则会被拦截。
2. 域名白名单限制
未添加到白名单的域名无法从小程序中请求。
3. 避免暴露敏感信息
- 不要将
secret、数据库连接信息等写在前端或小程序中。 - 所有敏感操作应在服务器端处理。
4. 接口权限验证
- 使用 token/JWT 做身份认证
- 对每个接口进行权限控制
五、推荐工具和服务
| 工具 | 说明 |
|---|---|
| 腾讯云 TCB(云开发) | 可以直接在小程序中调用数据库、云函数,无需自己搭建服务器 |
| 微信开发者工具 | 支持真机调试、接口模拟 |
| Postman | 测试 API 接口是否正常工作 |
六、总结流程图
小程序 wx.login()
↓
获取 code 发送至服务器
↓
服务器向微信换取 openid
↓
服务器生成 token 返回
↓
小程序保存 token
↓
后续请求带上 token 访问业务接口
如果你已经有一个具体的开发问题(比如:登录失败、接口跨域、HTTPS 证书错误等),可以告诉我,我可以提供更针对性的帮助。
PHPWP博客