据官方文档中描述:
wx.login 调用时,用户的 session_key 可能会被更新而致使旧 session_key 失效(刷新机制存在最短周期,如果同一个用户短时间内多次调用 wx.login,并非每次调用都导致 session_key 刷新)。
如果调用wx.login的时候没有刷新session_key,那通过调用wx.getUserProfile接口获取基本信息,此时的密钥是否是对应旧的密钥?由于openid需要从jscode2session接口获取,一旦调用了这个接口,旧的密钥是否就失效了呢? 那此时获取的用户基本信息拿去解密,解密密钥是否就会对不上了?还是新旧密钥都可以对获取到的用户基本信息进行解密呢?
wx.login获取到code,然后wx.getUserProfile获取iv等信息,这个时候发送给后端,当后端没用使用code之前,code依旧是有效的,当后端还没有使用又重新调用wx.login,这个时候之前的code将会失效 // 操作枷锁 --> 避免用户频繁操作限制 let shackles = true Page({ data: { code: '', }, onLoad() { this.getWxLogin() }, getWxLogin() { wx.login({ success: res => { this.setData({ code: res.code }) } }) }, wxGetUserProFile() { if(!shackles) return shackles = false wx.getUserProfile({ lang: 'zh_CN', desc: '用于登陆小程序', success: (res) => { //授权成功 requestLogin(res.userInfo) }, fail: (err) => { //授权失败 }, complete: (fulfil) => { shackles = true } }) }, requestLogin(userInfo) { console.log('code --->',this.data.code) console.log('userInfo --->',userInfo) //登陆失败等操作重新调一次getWxLogin } })