微信小程序客户端
第三方服务器端
微信服务器端
检测登录是否有效,如果无效则清楚登录信息(wx.checkSession);
调用接口获取登录凭证(code)(wx.login);通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
客户端获得code,并将code传给第三方服务端.微信小程序端调用wx.login,获取登录凭证(code),并调用接口,将code发送到第三方客户端
第三方服务端用code换session_key和openid.小程序端将code传给第三方服务器端,第三方服务器端调用接口,用code换取session_key和openid.
第三方服务端生成新的session(3rd_session).第三方服务器端拿到请求回来的session_key和openid,先留着,不能给客户端;然后用操作系统提供的真正随机数算法生成一个新的session,叫3rd_session.
第三方服务端建立对应关系,并存储.将3rd_session作为key,微信服务端返回的session_key和openid作为值,保存起来
第三方服务端将3rd_session发送到客户端.客户端只拿到3rd_session就够了,大人说话小孩别插嘴,小程序不需要知道session_key和openid
正常请求.小程序每次请求都将3rd_session放在请求头里,第三方服务端解析判断合法性,并进行正常的逻辑处理。
官方参考文档: https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801
拉取用户信息,将用户信息渲染到视图上
//获取用户信息
async getUserInfo() {
let token=wx.getStorageSync(‘token’)
//调取用户详情的接口
const res=await getUserDetail(token)
console.log(‘调取用户详情:’,res);
let _data={}
if(res.code===0) {
let {avatarUrl,id,nick}=res.data.base;
let n=0;
if(nick && avatarUrl ) {
n=2;
}else {
n=1;
}
_data={avatarUrl,id,nick,isShow:n}
this.setData(_data)
}
}