# 一、登录流程

- 小程序内通过
wx.login接口获得code - 将
code传入后台,后台对微信服务器发起一个https请求换取openid、session_key(解密encryptedData、iv得到的) - 后台生成一个自身的
3rd_session(以此为key值保持openid和session_key),返回给前端。PS:微信方的openid和session_key并没有发回给前端小程序 - 小程序拿到
3rd_session之后保持在本地 - 小程序请求登录区内接口,通过
wx.checkSession检查登录态,如果失效重新走上述登录流程,否则待上3rd_session到后台进行登录验证
通过上面
wx.login和wx.getUserInfo两个api拿到相应的信息,并通过上方接口传给自己的服务器.
登录获取用户信息
wx.login({
success(res){
console.log(res)
//code:"fda41033Z0fdak3dfae01dffaaWXQA1vwQ4dfae0Akg3e0Z0k3E"
//errMsg:"login:ok"
}
})
@前端进阶之旅: 代码已经复制到剪贴板
wx.getUserInfo({
success(res){
console.log(res)
}
})
@前端进阶之旅: 代码已经复制到剪贴板
返回的信息

需要传输的信息有7个参数
appid 小程序唯一标识
secret 小程序的 app secret
js_code //wx.login登录时获取的 code,用于后续获取session_key
//下面两个参数用户服务器端签名校验用户信息的
signature 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。
rawData 不包括敏感信息的原始数据字符串,用于计算签名。
//下面两个参数是用于解密获取openId和UnionId的
encryptedData 包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量
@前端进阶之旅: 代码已经复制到剪贴板
- 可精简为以下三个参数.
- 其余的签名校验的参数可省略,而
appid和secret可以直接写在服务器.
js_code // wx.login登录时获取的 code,用于后续获取session_key
encryptedData 包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量
@前端进阶之旅: 代码已经复制到剪贴板
服务端处理返回token、sessionId过程省略…
