不能将腾讯混元api key写在小程序前端,因代码可被反编译、请求可被抓包,导致密钥泄露和安全风险;必须通过云函数中转并用环境变量存储密钥,配合签名校验等防护措施。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

小程序前端代码会被用户下载查看,直接把腾讯混元API Key写在wx.request或云函数调用里,等于把大门钥匙贴在门上——任何人抓包、反编译都能拿到,立刻面临密钥泄露、被恶意刷量、账户被封禁甚至产生费用的风险。
为什么不能把API Key写在小程序前端
微信小程序代码经编译后仍可被工具(如 wxappUnpacker)还原出 JS 逻辑;网络请求的 header 或 data 字段若明文携带 SecretKey,抓包工具(Charles/Fiddler)一眼可见;一旦密钥泄露,攻击者可绕过你的业务逻辑,直连混元 API 接口无限调用。
腾讯云明确要求:SecretKey 必须保密,严禁出现在客户端代码中。违反该原则导致的安全事件,责任由开发者自行承担。
正确做法:通过云函数中转请求
第一步:在微信开发者工具中确保已开通「云开发」环境,并完成初始化(wx.cloud.init)
第二步:在云开发控制台新建云函数(例如命名为 hunyuan-proxy),右键「在本地创建云函数」→ 选择 Node.js 16 运行环境 → 确认生成
第三步:编辑云函数 index.js,用 【环境变量】 存储 SecretId 和 SecretKey,绝不在代码里硬编码——在云函数配置页 → 环境变量 → 添加键值对:HY_SECRET_ID 和 HY_SECRET_KEY,值为你在腾讯云「访问管理 → API密钥管理」中创建的密钥
第四步:在云函数内使用腾讯云 SDK 调用混元 API,示例关键代码:
const { TcClient } = require("tencentcloud-sdk-nodejs");<br>const { ChatClient } = require("tencentcloud-sdk-nodejs/tencentcloud/services/hunyuan/v20230901");<br>const clientConfig = {<br> credential: {<br> secretId: process.env.HY_SECRET_ID,<br> secretKey: process.env.HY_SECRET_KEY<br> },<br> region: "ap-guangzhou",<br> profile: { httpProfile: { endpoint: "hunyuan.tencentcloudapi.com" } }<br>};<br>const client = new ChatClient(clientConfig);
第五步:在小程序端仅调用该云函数,传入 prompt 等必要参数,不暴露任何密钥信息
进阶防护:加一层网关校验
方法一:在云函数开头验证请求来源
读取 event.headers['x-wxa-src'] 或检查 wxContext.OPENID 是否存在,拒绝无有效登录态的调用。这能拦住未授权的小程序页面直接调用,但不能防住已登录用户的恶意构造请求。
方法二:为每次请求生成短期有效的签名 token
在小程序端调用云函数前,先用云函数 getSignToken(内部用 HMAC-SHA256 + 时间戳 + 随机数 + 密钥)生成一个 5 分钟有效期的签名;hunyuan-proxy 收到请求后,用相同逻辑复验签名,失败则 return { code: 401 }。这一步能显著提高重放攻击门槛。
【注意】签名密钥必须也存于云函数环境变量,不可出现在小程序代码或本地 storage 中。
绝对禁止的错误操作
把 SecretKey 拼接进字符串再 base64 编码 → 解码只要一行代码,毫无防护意义
用 wx.setStorageSync 存密钥 → 用户打开调试器 Application → Storage 栏目下直接可见
在云函数里 console.log(SecretKey) → 日志会明文输出到云开发控制台,且可能被审计日志捕获
将密钥写在 miniprogram/pages/xxx/xxx.js 的注释里 → 构建后仍保留在包内,反编译即得
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











