DAY9
1、登录流程时序
小程序:用户使用的客户端,即微信小程序。
开发者服务器:微信小程序的后端服务器,用于为微信小程序用户提供服务。
微信接口服务:微信为开发者服务器提供的接口。
2、
在微信小程序中,通过wx.login()方法获取临时凭证code(由微信小程序内部自动生成,每次调用获得的code都不同,有效期为5分钟,且被微信接口服务验证一次后就会失效)。
在获取code后,使用wx.request()方法将code发送给开发者服务器。
开发者服务器将appid(微信小程序的唯一标识,即AppID)、appsecret(微信小程序的密钥,即AppSecret)和code发送给微信接口服务进行登录凭证校验,如果校验成功,微信接口服务会返回session_key、openid、unionid等信息(appid和appsecret用于辨别微信小程序开发者身份;session_key是用户的会话密钥,用于对用户数据进行加密签名,需要存储在开发者服务器中,当调用获取用户信息等微信接口时,需要用session_key解密相关数据;openid是用户唯一标识,同一个微信用户在不同AppID的微信小程序中的openid是不同的;unionid是用户在开发微信开放平台账号下的唯一标识,若当前的微信小程序已绑定到微信开放平台账号会返回此消息。)
在开发者服务器中为登录成功的用户生成一个token,然后通过验证token的有效性来识别用户的登录状态。在用户登录成功时,并发者服务器需要保存用户的openid和session_key,然后生成一个对应的token响应给微信小程序。微信小程序下次请求时,需要携带token。当开发者服务器收到请求后,需要使用当前请求携带的token查询对应用户的openid和sesssion_key,如果查询到,说明用户已登录,如果没有查询到,则说明用户未登录。