微信小程序--登录

根据一篇小程序的总结文章整理了一下和登录还有用户信息相关的笔记

原文:https://juejin.im/post/5b8fd1416fb9a05cf3710690

登录

  1. 利用OpenId创建用户体系:客户端通过wx.login获取code -> 将code传递给服务端,服务端利用code调用微信登录凭证校验接口,微信服务器返回openid和会话密钥session_key,服务端可以利用openid生成用户入库,再向客户端返回自定义的登陆态 -> 客户端缓存自定义登陆态(token),后续调用通过登录态标识用户
  2. 利用Unionid创建用户体系(可以实现多个小程序、公众号、已有登录系统的数据互通):
    • 用户关注了某个相同主体公众号,或曾经在某个相同主体App、公众号上进行过微信登录授权
    • 引导用户主动授权,通过返回的信息和服务端交互即可拿到unionid,服务端返回登录态,本地记录:调用wx.login获取code -> 从微信后端换取到session_key,用户解密getUserInfo返回的敏感数据 -> 使用wx.getSetting获取用户的授权情况(如果已授权,直接调用wx.getUserInfo获取用户最新的信息;如果未授权,显示按钮提示用户登入,用户授权后就获取到用户的最新信息)-> 获取用户数据后可以进行展示或者发送给后端

授权获取用户信息流程

  • session_key有有效期,开发者无法知晓有效期,用户越频繁使用小程序,session_key的有效期越长
  • 调用wx.login会直接更新session_key,导致旧session_key失效
  • 小程序内先调用wx.checkSession检查登录态,保证没有过期的session_key不会被更新,再调用wx.login获取code。接着用户授权小程序获取用户信息,小程序拿到加密后的用户数据,把加密数据和code传给后端,后端通过code拿到session_key并解密数据,将解密后的用户信息返回给小程序

猜你喜欢

转载自www.cnblogs.com/minz/p/9691248.html