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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实...
    大海_e68f阅读 1,946评论 1 4
  • 背景 微信小程序的使用可以快速的基于场景进行用户圈的建立推广,其中根据业务需要使用用户信息以及授权过程,主要用到的...
    极乐叔阅读 1,326评论 1 4
  • 通过 wx.login() 获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key...
    奇点一氪阅读 7,293评论 2 4
  • 很多人可能一辈子都不一定会知道自己的临界点在哪里,很多人也许很年轻的时候就突破了自己的能力界限,步入开挂升级的人生...
    火球君阅读 928评论 0 1
  • 3.26 周四 晴 今天7:30起床,洗漱加做早餐,到8:20,时间还是长了一点,要加快速度。 鱼丸是昨晚打好的,...
    YZ练习册阅读 222评论 0 0

友情链接更多精彩内容