「AI开发小程序教程」七、用户与登录
在第六篇中,我讲了怎么用AI开发一个待办事项小程序的后端程序,把数据存储到服务器中,即使换了手机,历史数据也能取到。但这些数据会对打开小程序的任何人展示,也可以被任何人更改,无法服务多个用户。
要解决这个问题,需要加入用户体系,并在数据库中记录每条数据是哪个用户的。小程序只把属于用户自己的数据展示出来,并且每个用户只能修改删除自己的私有数据。
用户体系
一般来说,一个支持多用户的软件中,会有用户表,用于存储用户ID、用户名、密码、昵称、头像等个人信息。在其他数据表中,通常添加一个user_id来表示是哪个用户的数据。
但在微信小程序的场景下,有一点不同,因为使用微信小程序的用户本身一定是一个微信用户。微信小程序提供了一种机制(wx.login),我们可以利用这个机制获取到用户在我们小程序里的唯一用户id:openid。所以,在微信小程序中,后端程序也可以不需要自建用户表。
相关文档位于:
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

注意,openid是用户在当前小程序的唯一标识,同一个用户在不同的小程序中的openid是不一样的。这肯定是出于安全考虑非常正确的做法。所以你如果开发了多个小程序,即使两个小程序内有相同的openid,那也肯定不是同一个微信用户。
如果某个用户同时使用了你的多个小程序,并且你想要在不同的小程序之间进行用户的统一的互联互通,那么你需要去微信开放平台注册一个帐号(注意是开放平台,不是公众平台),并且把小程序绑定到微信开放平台帐号上,然后使用unionid,而不是openid。在这个教程中,我暂时用openid就足够了。
要注意的是,并不是在小程序的代码中使用了wx.login就立即获得到openid,这个方法只会返回一个code。

需要把这个code提交到后端程序,再从后端程序中访问微信的接口来换取openid。完整的登录机制文档位于:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

可以看到,在请求微信服务器的时候,需要appid和appsecret,这两个东西是从小程序的后台取得的。

而微信服务器提供的接口是auth.code2Session,文档位于:
https://developers.weixin.qq.com/miniprogram/dev/server/API/user-login/api_code2session.html
你不必了解到底怎么调用这些方法,因为最终是AI帮我们实现这些东西。你只需要知道流程,以便跟AI说明:
- 使用wx.login拿到code
- 把code发送到后端程序
- 后端程序去请求微信接口auth.code2Session,拿到openid
- 后端不要直接返回openid,换成一个门票给小程序(也称为token、令牌等)
- 小程序存储这个门票,并在后续请求后端程序时带上门票
当然,门票的有效时间你可以随意指定,可长可短,当门票实效后,重新来一次登录流程就行
用户登录
上面的内容,我重点讲了微信登录,但是并不是说非要用微信登录才行。
小程序并没有限制登录方式,你依然可以使用自建的用户系统,用户表。提供登录、注册的方法。比如常见的手机号+验证码、帐号(如手机号、邮箱)+密码登录等。
以下是详细的对比,✅代表优势项

当然,你也可以同时支持多种登录方式。
让AI帮你实现用户与登录
又到了跟AI聊天的时候了。由于登录方式的多样性,与AI聊天也会有不同的方式,这里我以帐号密码登录、微信小程序登录为例分别举个例子。
1、帐号密码登录
使用以下模版
为小程序增加用户体系,后端使用自建的用户表
小程序中实现登录、注册页面
后端存储用户密码时不要使用明文,要注意安全性问题,不要用过于简单的方式加密待办事项数据接口进行调整,只展示用户的私有数据
实现数据权限控制,用户只能操作自己的数据

然后测试功能正常就可以了,都是熟悉的套路了。非常简单,一次就过。

2、小程序登录
使用以下模板
为小程序增加用户体系,后端不需要自建用户表,使用微信小程序登录即可
- 使用wx.login拿到code
- 把code发送到后端程序
- 后端程序去请求微信接口auth.code2Session,拿到openid(此处需要的appid、appsecret,以配置文件配置,不要直接在代码中)
- 后端不要直接返回openid,换成一个门票给小程序(也称为token、令牌等)
- 小程序存储这个门票,并在后续请求后端程序时带上门票
- 门票的有效期为1天,如果失效,请重新登录
小程序中不需要登录、注册页面,用户进入小程序时,自动调用微信小程序登录
待办事项数据接口进行调整,只展示用户的私有数据
实现数据权限控制,用户只能操作自己的数据

接下来,按照提示把appid和appsecret写到配置文件里就能运行啦。
总结
按顺序读过之前文章的朋友可能越来越能感受和理解「像程序员那样,用AI制作小程序」的关键点了:可以不会写程序,但要学会一些程序员使用的词语,能清楚地向AI表达自己的需求。这也正是贯穿本教材的基本方法论,我会告诉你这些基本的词语、基本的流程,让你不光能用AI写出来小程序,也能像程序员那样专业!
小程序开发方法基本就是这样了,让AI不断更新和实现你的想法就行。接下来,我将重点介绍怎么真正部署、上线小程序,先完成主线任务。
