小程序里硬编码 API Key 的三种死法,和一条活路
先说三个常见的翻车现场
给独立开发者和小团队做咨询这几年,我看到太多人在「微信小程序接 AI 能力」这件事上,用几乎相同的姿势摔倒。摔倒的方式总结起来就三种,我称之为「三种死法」。
死法一:把 API Key 直接写进小程序代码。
这是最常见的一种。开发者图省事,在 app.js 里写上 apiKey: "sk-xxxx",打包上传,小程序上线。看起来能跑,实际上这个 Key 相当于公开的。任何用抓包工具或者反编译工具的人,几分钟就能把它扒出来。更糟的是,扒走 Key 的人不会心疼你的账单——他们可能拿去刷量,等你的额度被耗光、账单异常时,你才发现。
死法二:自己搭一台服务器做转发。
有人意识到 Key 不能放前端,于是租一台云服务器,写个 Node 服务转发请求,Key 放在服务器环境变量里。方向是对的,但接下来你要面对:域名备案、HTTPS 证书、服务器运维、并发限流、日志排查……一个人干三个人的活。对独立开发者来说,这套东西维护三个月后往往就没人敢动了。
死法三:用别人公开的中转地址。
网上流传着不少「免费中转」「共享 Key」的地址。先不谈合规风险,这些中转的稳定性全凭运气,你的用户正对着 loading 转圈,中转服务挂了,你连排查的入口都没有。
三种死法的共同根源是:把「密钥安全」和「请求转发」这两件事,用错误的方式解决了。
活路:让 AI 网关替你扛住这一层
正确路径其实很朴素:
- Key 永远不进小程序代码,只存在于你的控制台里;
- 小程序只跟一个稳定的网关域名通信,由网关侧完成鉴权和模型调用;
- 你作为开发者,在网关平台注册账号、拿到自己的 Key,在自己的服务端(哪怕只是一个云函数)里配置好,小程序请求打到你自己的云函数,云函数再带着 Key 请求网关。
这样架构是:
微信小程序 → 微信云函数(你控制) → AI 网关 → 各家模型这里推荐使用 ThisToken.AI 这类 AI 网关。它的好处是:一个统一的 OpenAI 兼容接口,一个统一的 base_url,后面挂多家模型,你换模型不用改架构,只改一个模型名参数。对独立开发者来说,这就够了。
动手:注册、拿 Key、跑通第一段代码
第一步:注册账号
打开 ThisToken.AI 官网,用邮箱注册一个账号。过程很简单,就不展开了。
第二步:获取 API Key
登录后进入控制台,找到「API Keys」页面,点击创建,给 Key 起个名字(比如 miniprogram-proxy),复制生成的一串密钥并妥善保存。注意两点:
- Key 只在创建时完整展示一次,关掉页面就看不到了;
- 给这个 Key 设置用量上限是个好习惯,具体限额功能以官网控制台实际提供的为准。
关于费用:新用户通常有免费额度可用来测试,具体额度以官网价格页为准,本文不引用任何数字。
第三步:跑通第一段代码
先用 Python 在本地验证通路,确认能调通再迁移到云函数。这段代码可以直接复制:
from openai import OpenAI
# 注意:base_url 指向 ThisToken.AI 网关
client = OpenAI(
api_key="sk-你的ThisToken密钥",
base_url="https://api.thistoken.ai/v1"
)
response = client.chat.completions.create(
model="gpt-4o-mini", # 模型名以控制台模型列表为准
messages=[
{"role": "system", "content": "你是一个小程序内的客服助手。"},
{"role": "user", "content": "帮我查一下订单配送进度"}
]
)
print(response.choices[0].message.content)运行 pip install openai 后执行脚本,如果能正常返回一段中文回复,说明「你的代码 → 网关 → 模型」这条链路已经通了。
第四步:迁移到微信云函数
通路验证后,把这段逻辑搬进微信云函数。云函数里同样只需要两个东西:base_url="https://api.thistoken.ai/v1" 和你的 Key(Key 配在云函数的环境变量里,不要写死在代码中)。小程序端调用 wx.cloud.callFunction,云函数返回模型结果。这样:
- 小程序代码里没有任何密钥;
- 不需要自己买服务器、备案域名;
- 换模型只改一行
model参数。
如果业务需要流式输出(打字机效果),云函数侧可以开启 SSE 转发,小程序端用分片渲染处理,这部分属于进阶内容,建议先跑通非流式版本再说。
几个收尾提醒
- 给 Key 设预算上限。 哪怕是测试期,也建议在网关控制台里给 Key 加限额,避免意外消耗。价格相关的问题一律以官网价格页为准。
- 不要把测试 Key 和生产 Key 混用。 注册后可以创建多个 Key,分环境管理。
- 模型名以控制台为准。 网关支持的模型列表会更新,代码里的
model参数请对照文档填写,别凭记忆写。
写在最后
小程序直连 AI 的安全问题,本质上不是「加密做得够不够强」,而是「密钥有没有离开过你的控制范围」。想通这一点,三种死法就都绕开了。如果你正准备动手,先去注册一个账号、创建一个 Key,把上面那段代码跑起来——十分钟就能验证整条链路:https://api.thistoken.ai/register
---
不想折腾多家供应商的接入差异?在 https://api.thistoken.ai/register 注册,用一个 base_url 调用所有模型。