☰
微信小程序接入阿里云保姆级教程:从零跑通第一个云函数
2026/10/15 2:27:48 网站建设 项目流程

做微信小程序,最容易被低估的不是页面布局,而是小程序和阿里云平台之间那条看不见的数据链路。前段时间我帮团队搭一款工具型小程序,本以为一天能跑通,结果光是账号、服务、密钥这些前置条件,就磨掉了一个下午。这篇把第一阶段完整记录下来:从注册小程序账号,到准备好阿里云侧的服务,再到跑通一个最小的云函数请求。它适合刚注册完小程序号、还没认真碰过后端的开发者,也适合准备换云接入方向的个人开发者。看完你会发现,慢是正常的,绝大多数时间都耗在“准备”上,而不是写代码。

1. 为什么小程序和阿里云要分成两端看

1.1 小程序端能做什么,不能做什么

我见过的不少初学者,觉得小程序只要写页面就能上线。实际上,小程序只是一个前端容器,它负责页面渲染、按钮交互、数据展示、本地缓存。真正需要“服务端”的部分,比如用户登录态验证、数据库读写、文件上传下载、短信验证码、订单状态计算,小程序本身完全扛不动,也不应该扛。

这里的边界很清晰:凡是需要隐私安全、数据持久化、跨用户共享的能力,都放到云平台;凡是只跟当前手机屏幕有关、刷新后可以丢的临时状态,留在小程序里。比如一个简单的“用户上传头像”功能,小程序负责选图、压缩、预览,真正的图片存储和访问链接生成,得交给阿里云的对象存储服务;而头像URL写入用户表,又要靠后端接口完成。

所以“接入阿里云平台”不是把小程序搬家到云上,而是给你这个小程序开一条合法的数据通路:小程序发起HTTPS请求到云端的接口,云处理完再返回结果。这个过程中,网络链路、域名、证书、权限,每一项都绕不开。

1.2 云服务不是“一个云”,而是一组能力

阿里云平台本身不是一台大服务器,它是一大堆服务的集合。接入之前,先分清你项目需要哪几类能力,才不会在控制台里迷失。

业务需求对应云服务主要用途
存放图片、文件、音视频对象存储OSS上传下载、静态资源托管
写轻量后端接口函数计算无服务器运行代码,按调用计费
发验证码、通知短信短信服务手机验证码、业务通知
跑固定业务系统云服务器ECS需要长期运行的Java/PHP等应用
存用户数据、订单云数据库结构化数据存储

我第一篇文章建议只关心前三项:对象存储、函数计算、短信服务。这三项足够撑起一个中小型工具类服务,且都有免费额度或低价档位。很多团队一上来就买一台云服务器,结果装环境、配防火墙、维护升级,还没开始写业务代码就先花了两天,这在小项目里完全没必要。

1.3 先规划接口列表,再动手

接入之前,最好拿出一张纸,把小程序要碰撞云端的接口列出来。比如:

  • 用户登录:小程序调用后端换取 openid,生成登录态 token
  • 获取首页数据:后端返回文章列表或分类菜单
  • 上传图片:小程序拿到临时上传凭证,直传 OSS
  • 发送验证码:手机号+验证码接口

这一步看似多余,但它决定了你要开通哪些云服务、买哪个类型的资源、需要哪些权限。我在实际项目里就是这么干的,先列接口,再开服务,最后写代码,少走很多弯路。

2. 账号和密钥:最先卡住人的部分

2.1 小程序注册:主体决定你以后能做什么

创建小程序前,你需要先有一个小程序的账号。这一步直接在微信公众平台完成,流程不算复杂,但主体类型会长期影响你,一定要想好。

个人主体注册最简单,拿身份证和手机号就能搞定,但有一些限制:不能开通微信支付、部分接口权限需要申请、短信服务对企业主体更友好。如果你只是学习、做个个人工具,个人主体够用;如果未来要上线商业功能,尤其是涉及支付、类目资质,必须使用企业主体。

注册完成后,进到“开发管理-开发设置”,能看到AppID。这个字符串是整个项目绑定小程序身份的唯一钥匙。很多教程会用“测试号”来演示,但测试号不能真机发布,也不能绑定云服务域名,所以我建议直接用正式AppID,哪怕项目还没上线。

这里有个我踩过的小坑:注册小程序时填的管理员邮箱,最好用不常用的安全邮箱,因为后续的账号找回、安全验证都靠它。我一度用工作邮箱注册,后来离职交接非常难受。

2.2 阿里云账号:实名准备

阿里云侧的准备工作也很直接:注册阿里云账号,完成实名认证。实名认证分为个人认证和企业认证,个人认证拿着身份证在线就能过,企业认证需要营业执照信息,周期会稍长。

实名认证没通过之前,很多服务购买和密钥创建都会受限,所以这件事要放在最前面。我当时忽略了这个先后顺序,先去开通短信服务,结果被提示“请先完成实名认证”,白白浪费了十几分钟。

阿里云侧的密钥体系,我强烈建议不要直接用主账号的 AccessKey。主账号相当于云账户的“总钥匙”,权限是全局的,一旦泄露,别人可以操作你名下所有资源。正确做法是创建一个RAM子账号,只给它需要的权限。比如,只需要操作函数计算,就只授权函数计算相关权限;只访问 OSS 的某个 Bucket,就单独授权那个 Bucket。

创建路径是:控制台首页搜索“RAM”,进入访问控制,创建用户,勾选“OpenAPI 调用访问”,生成 AccessKey ID 和 AccessKey Secret。Secret 只在创建时出现一次,务必保存到本地密码管理器里,不要放在项目目录、分享到聊天记录里。

2.3 域名备案不是可选项,要提前排期

这是一个很多人到第二篇才会痛的问题:微信小程序正式环境的请求域名,必须满足两个条件——HTTPS 和已备案。如果你的云服务区域在大陆,阿里云要求绑定的自定义域名完成 ICP 备案。备案不等于解析,它是一个人工审核流程,顺利的话也要几天,慢的可能两三周。

所以我的建议非常直接:如果项目中确定要用自己的域名,第一步就该把域名买好、开始备案。不要等到云函数都写完了,才发现请求域名过不了微信校验。备案期间不需要关服务器,也不影响本地开发调试,你完全可以在备案等待过程中继续写代码。

3. 开发环境落地:微信开发者工具的几道坎

3.1 安装与登录:版本选稳定版

微信开发者工具是写小程序必须的本地 IDE。官网下载时,我建议勾选稳定版,不要一看到“最新版”就往上冲。RC 版和开发版经常有模拟器状态不稳的问题,我同事有一次升级到 RC 版后,预览页面白屏了半天,最后回滚稳定版才恢复。

安装完成后,用管理员微信扫码登录。这里要注意,登录工具的人需要在公众平台里被添加为“项目成员”,否则扫码后可能提示没有权限。个人开发者自己注册自己扫码,一般不会有这个问题。

3.2 新建项目:AppID 一定要填对

新建项目时,有两个输入格外敏感:项目目录和 AppID。项目目录建议选一个纯英文路径,不要带中文和空格。因为后续构建、压缩、上传,有些环节对中文路径支持不友好。

AppID 就填上一步从微信公众平台复制的那串字符串。如果留空,工具会进入“游客模式”,虽然也能写页面,但部分 API 会被限制,比如 wx.login、真实网络请求都可能受影响,后面接阿里云时会有各种诡异的报错。所以老老实实把正式 AppID 填进去。

模板选择默认的“JavaScript-基础模板”就够了。小程序官方现在支持 TypeScript 和云开发模板,但这一阶段不要被额外代码干扰,基础模板干净,方便你理解整个目录结构。

3.3 建一个最小页面,确认本地预览正常

基础模板自带一个页面,点击编译后,模拟器里会显示官方首页。建议你先删掉示例代码,自己写一个最简单的页面,确保整套编译链路是通的。比如在pages/index/index.wxml里写一行:

<view>hello cloud</view>

再在index.js里加一句console.log('本地调试正常')。编译后打开调试器 Console,看到这行输出,工具本身就没问题了。

这一步看起来过于基础,但它能帮你区分“是工具坏了”还是“代码有问题”。我后来排查“请求阿里云接口失败”时,就是因为本地页面能跑、但接口报错,才快速定位到域名校验和权限问题,而不是怀疑工具环境。

3.4 调试面板的默认开关

开发者工具里有一个很容易被忽略的开关:右上角“详情 - 本地设置 - 不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。默认处于关闭状态,也就是说,你本地请求一个没配合法域名的接口时,会被微信拦截。

调试阶段,这个开关可以先打开,方便连本地服务和未备案域名。但你要在心里划一条清晰的分界线:这只属于开发环境,发布前必须关闭,并替换成合法域名。很多开发者在本地调试得正欢,一上传代码就发现请求全部失败,根因就在这里。

4. 阿里云服务开通:按需选择,别囤货

4.1 常用服务横向对比

开通服务之前,我做了一个简单的对比,直接把第一阶段的决策思路写出来:

服务适合场景计费特点我的建议
对象存储 OSS图片、文件、静态页面按存储量、流量、请求次数收费必开,头像/文件上传都用它
函数计算 FC短小接口、无服务器业务按调用次数和计算资源计费必开,替代初期后端服务器
短信服务验证码、通知按条计费看业务需求,个人主体先确认能否申请签名
云服务器 ECS长期运行、传统后端包年包月或按量非必要不买,运维成本高
云数据库 RDS强一致SQL数据包规格、按量数据量上来后再考虑

我在这个项目里选择了“OSS + 函数计算 + 短信服务”组合。函数计算承担了后端逻辑,OSS 承担了存储,短信服务留着给注册和找回密码用。等到并发和业务复杂度上来,再迁移到 ECS 或容器服务也不迟。

4.2 先开通 OSS:创建 Bucket,权限别乱放

进入 OSS 控制台后,第一步是创建 Bucket。Bucket 名字必须全局唯一,我习惯用项目名加环境后缀,比如demo-images-dev。区域选择上,优先选离你服务器近的区域;如果用户集中在大陆,就选华东、华北之类的节点。

读写权限这里,我先提醒一个很现实的坑:创建时默认“私有”。我见过很多人为了图方便,改成“公共读”,结果图片链接确实能直接打开,但任何人都能看到你 Bucket 里的所有文件,流量费用也跟着上来。正确做法是保持私有读写,文件上传通过后端签名 URL 或 STS 临时凭证完成,访问时也用临时指路链接。第一阶段如果只是本地测试,可以保留私有,然后通过控制台临时文件 URL 预览效果。

创建完成后,OSS 控制台会显示一个访问域名,记住这个域名,后面配 CDN 或者自定义域名时会用到。

4.3 函数计算:先造一个能回话的接口

函数计算的开通同样很直接:创建一个服务,服务下创建函数。我通常建议运行时选 Node.js 或 Python,看团队熟悉哪种,两者都能快速跑通。

以 Node.js 为例,处理函数可以长这样:

exports.handler = function (event, context, callback) { const response = { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ code: 0, message: 'hello from fc' }) }; callback(null, response); };

保存后点部署,然后在函数配置里找到“触发器”,创建一个 HTTP 触发器。触发器的访问方式选择“公网访问”,认证方式可以先选“无需认证”,方便联调。如果你选择“需要认证”,小程序端还得每次拼接签名,这是后话。

部署完成后,控制台会生成一个公网调用地址。我的建议是先用浏览器或者接口测试工具访问一下,能看到返回 JSON,函数计算部分就稳了。

4.4 RAM 最小授权:权限越小越安全

前面创建 AccessKey 时,我已经建议使用 RAM 子账号。这里再把授权这步说透:在 RAM 控制台给子账号添加权限时,不要图方便直接给“AdministratorAccess”。你只需要这几个系统策略:

  • AliyunOSSFullAccess:允许操作 OSS 资源
  • AliyunFCFullAccess:允许部署和调用函数计算
  • AliyunDysmsFullAccess:允许管理短信服务(如果用到)

如果后续发现权限不够,再加策略都来得及。但一开始就给全权限,等于在钥匙串上挂了一把万能钥匙,风险完全不可控。我第一次做的时候没注意,把主账号 AccessKey 直接放到了小程序代码里,那一刻等于把云账户密码发在了公网上。幸好是测试环境,撤销得早。

5. 最小链路打通:从云函数到小程序屏幕

5.1 部署一个“打招呼”函数

在函数计算控制台,先创建一个服务,我命名它叫hello-service,再创建一个函数,命名hello。函数入口是index.handler,代码就用上一节那段,返回一个 JSON。

部署完成后,先在控制台“测试函数”,看响应是否正常。再复制生成的 HTTP 调用地址。这个地址通常已经带 HTTPS,格式可能是这样的:

https://xxx.cn-hangzhou.fc.aliyuncs.com/xxxx/hello-service/hello/

不要手写这个地址,直接从控制台复制最稳妥。手打容易漏路径段,我就因为少写了一层 proxy,整块接口调了半小时才反应过来。

5.2 在小程序里发出第一次请求

回到微信开发者工具,在小程序的index.js里写一段wx.request:

Page({ onLoad() { wx.request({ url: 'https://xxx.cn-hangzhou.fc.aliyuncs.com/xxxx/hello-service/hello/', method: 'GET', success(res) { console.log('云函数返回:', res.data); }, fail(err) { console.error('请求失败:', err); } }); } });

编译运行,打开调试器的 Network 面板,会看到这条请求记录。如果一切正常,Console 里会打印“云函数返回”和{code: 0, message: "hello from fc"}。到这里,小程序和阿里云之间的最小数据链路就算真的通了。

这个时刻看起来不起眼,但它证明了三件事:函数计算部署无误、网络链路可达、小程序的请求代码正确。之后增加的登录、查询、上传,都是在这个链路基础上扩展的。

5.3 调试期可以跳过域名校验,发布前必须替换

你在本地访问上面这个函数计算地址时,很可能会被微信拦截,因为这个小程序账号的“合法域名”配置里还没有这个地址。所以前面我让你暂时勾选“不校验合法域名”来跑通调试。

但一定要记住,这只是临时的。将来上线前,需要把这个地址换成自己的自定义域名,并到微信公众平台“开发管理-开发设置-服务器域名”里,把合法 request 域名加进去。这里有几个硬性要求:

  • 域名必须已备案
  • 必须支持 HTTPS
  • 域名不能使用 IP
  • 合法域名最多配置 20 个

我之前有个朋友就是没提前配域名,全部开发都基于临时地址,结果到了提审阶段重新配域名,所有代码里的 URL 都要改一遍,痛不欲生。所以,临时地址调试只是过渡,自定义域名这步一定要尽早规划。

5.4 一个小目标:后端返回数据并渲染到页面

链路打通后,可以顺手做一个小渲染:把云函数返回的 message 显示到页面上。修改index.wxml:

<view>{{cloudMsg}}</view>

再在index.js的 success 回调里赋值:

this.setData({ cloudMsg: res.data.message });

看到页面上出现“hello from fc”,这一阶段就算完整收官。它虽然只是“Hello World”,但整套链路中的域名、密钥、服务开通、调试设置全部走了一遍。

6. 第一篇结束前,务必检查这几个坑

6.1 密钥别写死在代码里

这个坑我必须单独拎出来说。小程序代码是会被下载到用户手机上的,里面写的 AccessKey 等于白送。正确的方向是:小程序端只拿短期的、有权限限制的临时凭证,比如 STS Token,由你的后端接口负责换取。

第一阶段,我的做法是把 AccessKey 放在函数计算的环境变量里,业务代码通过读取变量使用,而不是明文写在代码里。函数计算控制台支持配置环境变量,密钥放那里比放在代码文件里安全得多。

6.2 OSS 权限和费用

OSS 看着便宜,但流量和请求费用容易失控。如果你的 Bucket 是“公共读”,然后被人拿到了文件 URL 恶意刷流量,月底账单会让你记忆深刻。我的建议是:Bucket 默认私有,上传用 STS 临时凭证或签名 URL,不走公网裸奔。哪怕是测试环境,也要养成这个习惯。

6.3 备案和域名越早越好

再说一次,不备案的域名在小程序正式环境寸步难行。现在就可以去域名注册商买一个合适的域名,不用特别贵,普通.com或.cn都行。然后提交备案,等待期间继续开发,完美并行。

如果你用的是阿里云中国大陆节点服务器,备案入口就在阿里云控制台,按流程填信息、上传资料即可。个人备案需要提供身份证信息,企业备案需要营业执照,材料提前拍照存好。

6.4 第一篇还没有覆盖的内容

第一篇到这里,核心目标是“跑通一台空机器”:微信开发者工具建项目、阿里云开通服务、函数计算返回消息、小程序发出请求。接下来的内容会围绕几个绕不开的硬骨头展开:

  • 自定义域名接入,替换默认函数计算地址
  • HTTPS 证书配置与更新
  • 小程序登录体系,微信wx.login换 openid,再生成业务 token
  • OSS STS 临时凭证,实现前端安全直传文件
  • 短信服务接入,处理验证码场景

这几块才是小程序接入阿里云真正的工作量所在,也常常是教程里最零散的部分。我会在后续陆续写清楚。

最后分享我个人的一点体会:接入云平台最忌讳一上来就追求复杂架构,先把一条最小链路跑通,再往里加东西。账号、密钥、域名、权限这些基础功课做得越细,后面越省心。我现在做任何新项目,哪怕只是个小工具,也会先把 RAM 子账号和 Bucket 权限一次性配到位,这个习惯帮我避掉了不少风险。下一篇我们直接进入自定义域名和登录态的实战部分。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询