一,微信程序的登录流程概述
其实有-来实现登录的一系列逻辑,但是它太多对我而言无用的数据了.我只需要简单的数据.那就自己写呗.
微信官网已经把登录的流程写得很清楚了,官网地址:小程序登录 微信开放文档 (.)
首先小程序通过.()获取登录凭证,每次调用均不同,有效时间是5分钟,该被微信接口服务验证一次就会失效了,小程序获取到之后,通过.()将发送到者服务器,者服务器将,(密钥),和发送给微信接口服务去校验登录凭证,成功会返回_(会话信息记录)和(用户唯一标识),用户登录成功后,者服务器可以将和_保存,生成一个自定义登录态的(令牌)响应回去给小程序,通过可以查询和_,小程序下次请求只要携带着就可以证明已经登录。
接下来,我会照着这个流程,一步步完成小程序的免登.二,获取
按照官网的.就可以获得这个.
官网地址:
具体的使用如下:直接在项目根目录的.文件中写就行:
然后在微信者工具中重新编译,查看控制台,就可以看到打印出来的了.三,新建接口接收这个
现在我们已经获取到这个了,接下来需要将传递给我们的服务器.
于是我们首先需要新建这个服务端接口提前端调用.3.1,新建接口
依旧是使用云对象的方式,右键云服务器的云对象文件夹,新建云对象:
然后书写如下代码:四,前端调用登录接口传递
现在我们已经具备了后端登录接口,就需要在前端调用,将传递给后端.
于是在刚刚.文件中继续书写如下代码:
通过这一步我们将通过云对象(也就是我们常规前后端中的接口)的形式传递给了我们的服务器(云后台).五,后端接收到,调用微信接口
这里我们后端已经接收到,按照文档,需要接着把、、通过调用2接口来获取和.
参考的官网地址:小程序登录 微信开放文档 (.)
于是参照文档,我们在云对象中书写如下代码:
值得注意的是,这里我把和存储在了上一篇文章中说到的.中.
于是,这里我们在服务端调用微信接口,获取到了和.六,根据和生成自定义的登录态
现在获取到和,因为不建议直接暴露这两个参数给客户端,所以我们通常会利用这两个参数生成自己定义的登录态.6.1,封装加解密方法
一般我们需要进行加密,考虑到大部分接口都需要进行加解密,于是可以在中新建一个公共文件夹(右键新建文件夹即可):-,然后在该文件夹下安装加解密依赖:
然后下新建.文件,对加解密方法进行封装处理:6.2,在云对象中引入加解密方法
在云对象上右键-管理公共模块或扩展库依赖,勾选上文创建好的库.
然后修改云对象:七,新建用户数据表,根据查询数据表
在控制台新建数据表:
然后在云对象中新建注册用户的方法:获取该数据表,查询是否已存在用户,不存在则新增用户.
于是完整的云对象变成:八,前端发起请求携带
到目前为止,我们已经将自定义的返回给前端,前端这时候则需要拿到保存起来,并且在下一次接口请求时携带这个.
于是在.文件中就可以写:
然后我们接着写一个页面,修改完善用户信息的.
第一步:我们首先需要调接口获取到用户信息
于是还是在云对象中新建一个方法,作为接口.
第二步:在前端页面中进行调用:
实现的效果:
值得注意的是,小程序中,在 中的请求是异步的,也就是说在执行 后页面 就开始执行了,而不会等待 异步返回后再执行,这就导致了页面无法拿到 中初次登陆的。这明显是有问题的,我们想要的是在.中的 执行完毕后再执行页面代码.
具体的解决方案可以看这篇文章:- 中实现 异步回调后执行 最佳实践
我采用的是第一种方法.这个方法挺有意思的,其实就是利用.在的原型对象上存储一个,并且存储它的方法.
然后就可以将在其他地方使用了,于是页面上的代码只要使用个就能等待中的状态改变后再执行.九,修改用户信息
现在我们已经拿到了用户的信息,并在前端页面上进行了修改,那么接下来,就需要把这个修改提交到数据库.
同样的,第一步需要编写后端接口,方便起见,我依旧是在云对象中处理这段逻辑:
接着,在前端页面进行调用:
自此我们已经完成了微信小程序的登录,并在业务逻辑的接口中携带.
大体的流程就是这样啦.