小程序登录逻辑

小程序登录逻辑
前言:鉴于小程序的限制,不能强制用户刚进小程序就登录,用户需要浏览一定的业务后,才能引导用户进行登录。
小程序登录流程
1,调用 wx.login() 获取 临时登录凭证code ,并携带code向开发者服务器上发起请求,拿到token及其他所需的相关业务信息

其中 wx.login() => code =>(携带code发起请求)=>得到token的处理流程,见下图:
在这里插入图片描述
说明:
调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
调用 auth.code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意:

会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。
临时登录凭证 code 只能使用一次

官方的处理流程:

依据官方流程图涉及了三个端: 微信小程序客户端 ,开发者服务器,微信服务器端
1,客户端使用 wx.login() 获取 临时登录凭证code,然后通过wx.request将code发送到开发者服务器;
2,开发者服务器 凭借用户的Appid,appsecret和code从 微信服务器 获取session_key(本次会话密钥)和openid;
3,开发者服务器 根据获取到的 session_key(本次会话密钥)和openid 这两个信息定义用户的登录状态,并且将用户的自定义登录状态(即token)返回给用户端;
4,客户端 将 开自定义状态(token)存入缓存中,用户端 可携带自定义状态发起业务请求
5,开发者服务器 通过自定义状态 查询 openid和session_key,并返回 客户端 业务数据。

1,调用 wx.login() 获取 临时登录凭证code ,并携带code向开发者服务器上发起请求,拿到token,userinfor,及 用户真假状态,将这三个值存入缓存中
2,判断真假状态(真假状态根据后端返回的数据,也可判断是否有userinfor),如果是假,即为新用户,我们可以调起登录弹窗,提醒用户登录;如果为真,即为老用户,不用登录,继续业务逻辑即可;
3,在调取登录弹窗时,需要重新调用wx.login(),获取新的code,因为code具有时效性且只能使用一次;
4,用户点击确认授权登录后,将得到用户信息,iv,及encryptedData,更新缓存里的用户信息;并根据接口返回的状态,更新真假状态,如果接口调取成功,状态即为真,反之则为假。

以上便是一次完整的用户授权过程

ps:若token过期,重新wx.login() => code =>(携带code发起请求)=>得到token,更换缓存里的token即可。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值