微信小程序 - 用户授权登录

需求:微信小程序登录绑定系统账号互通

https://developers.weixin.qq.com/community/operate/doc/000640bb8441b82900e89f48351401
小程序内用户帐号登录规范调整和优化建议

之前微信授权登录时是直接可以通过getUserInfo接口 弹出授权弹窗。由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过 button 去触发

微信的官方解释如下:

https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01

小程序登录

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

说明:

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
  2. 调用 auth.code2Session 接口,换取 用户唯一标识 OpenID会话密钥 session_key

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意:

  1. 会话密钥 session_key 是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥
  2. 临时登录凭证 code 只能使用一次

小程序端 wx.login 获取code 并 wx.request 提交 code 给己方服务器
服务器 提交Appid + appSecret + code 到微信方服务器 获取 session_key & openid
服务器 根据 session_key & openid 生成 3rd_session(微信方提出的基于安全性的考虑,建议开发者不要将openid等关键性信息进行数据传输) 并返回 3rd_session 到小程序端
小程序端 wx.setStorage 存储 3rd_session 在后续用户操作需要凭证时 附带该参数
小程序端 wx.getUserInfo 获取用户信息 + wx.getStorage 获取 3rd_session 数据后,一并 wx.request 提交给己方服务器
服务器 SQL 用户数据信息更新

后端:
--- 登录凭证校验
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html

--- 通过该接口生成的小程序码,永久有效,数量暂无限制
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

后端缓存的,考虑个情况,切换微信账号登录

你可能感兴趣的:(微信小程序 - 用户授权登录)