微信小程序登录
1.调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
2.调用 code2Session 接口,换取 用户唯一标识 OpenID 和 会话** session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
注意:会话** session_key 是对用户数据进行 加密签名 的**。为了应用自身的数据安全,开发者服务器不应该把会话**下发到小程序,也不应该对外提供这个**。
临时登录凭证 code 只能使用一次
1.检测登录是否有效,如果无效则清楚登录信息(wx.checkSession);
2.调用接口获取登录凭证(code)(wx.login);通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话**(session_key)等。用户数据的加解密通讯需要依赖会话**完成。
3. 客户端获得code,并将code传给第三方服务端
微信小程序端调用wx.login,获取登录凭证(code),并调用接口,将code发送到第三方客户端
4. 第三方服务端用code换session_key和openid
小程序端将code传给第三方服务器端,第三方服务器端调用
5. 第三方服务端生成新的session(3rd_session)
第三方服务器端拿到请求回来的session_key和openid,先留着,不能给客户端;然后用操作系统提供的真正随机数算法生成一个新的session,叫3rd_session
6. 第三方服务端建立对应关系,并存储
将3rd_session作为key,微信服务端返回的session_key和openid作为值,保存起来
7. 第三方服务端将3rd_session发送到客户端
客户端只拿到3rd_session就够了,大人说话小孩别插嘴,小程序不需要知道session_key和openid
8. 正常请求
小程序每次请求都将3rd_session放在请求头里,第三方服务端解析判断合法性,并进行正常的逻辑处理。