微信小程序授权登录的一些探究

注意2021年4月28日24时后发布的小程序新版本无法通过wx.getUserInfo获取用户信息!

新的wx.getUserInfo有调整。可以获取code,继而获取unionId但是无法获取到用户信息,获取到的是匿名信息! 该接口对用户无感,底部弹出框!
如果要获取用户昵称等信息,则调用wx.getUserProfile接口,底部弹框,用户授权。
具体看原文!
官方原文

微信登录流程官方文档
注意小程序全权负责session_key的有效性,前端小程序通过wx.checkSession接口获取有效性,若无效则调用wx.login 获取新的code , 把code传递给服务器, 让服务器重新给小程序新的token 。 因为服务器无法知道session_key 是否过期,所以只有小程序来判断!
因此建议每次小程序调用服务器端提供的 需要登录用户才可以调用的API 时,需要在前面调用这个逻辑,如下代码逻辑。

wx.checkSession({
  success () {
    //session_key 未过期,并且在本生命周期一直有效
   //session有效才调用你的业务接口!!!!
  },
  fail () {
    // session_key 已经失效,需要重新执行登录流程
    wx.login() //重新登录
  }
})

总结。后台同学注意,小程序登录传过来的code, code+appId+appSecret 获取的session_key 一定不要设置过期时间,这个时间是前端小程序来告诉你的。 如果你之前的token设置了过期时间,我建议最好针对小程序单独加一个wxToken字段, 默认wxToken的有效期是永久的。
以上逻辑的支撑理由如链接 微信官方文档
重点我截图了,如下:

image.png

另外wx.login
可以获取到code (前端用户是无感的)。服务器可以通过code再调用auth.code2Session
获取到

image.png

wx.getUserInfo
是小程序底部弹框,需要用户授权的scope.userInfo

image.png

微信小程序登录流程图

image.png

你可能感兴趣的:(微信小程序授权登录的一些探究)