先来看微信小程序登录逻辑图:
这个图要说的就是实现微信小程序一键登录的流程和逻辑:
首先调用uniapp提供的API,uni.getUserProfile,那么什么是uni.getUserProfile呢?这个API就是获取用户信息,每次请求都会弹出授权窗口(这个可能会不弹,这个要看你的版本,根据版本来定,不懂的可以留下评论),用户同意后会返回userInfo。然后再调用uni.login方法,会获取用户的code编码,这个code编码需要传递给后端,后端用code编码生成token和各种信息传递给前端,起始就是来看看这个用户在当前小程序上有没有注册过,如果没有注册过,调用后端接口:wechatRegister(去注册)。这段文字你可以还不怎么理解,那么你继续看下面这段话:
首先小程序通过wx.login()(如果你是用uniapp的他将这个微信原生API已经封装了,可以看上面文字中的uni.getUserProfile和uni.login这两个就是已经封装了原生微信的API)获取登录凭证code,小程序获取code之后,通过wx.request()将code发送到开发者服务器,开发者服务器将appid,appSercet(密钥),和code发送给微信接口服务区校验登录凭证,成功会返回session_key(会话信息记录)和openid(用户唯一标识),用户登录成功后,开发者服务器可以将openid和session_key保存,生成一个自定义登录态的token令牌响应给微信小程序,通过token可以查询openid和session_key,小程序下次请求只要携带着token就可以证明已经登录。