微信小程序-新的页面授权机制

背景:

为了防止在打开小程序就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序

打断用户正常使用小程序流程,同时不利于获取新用户

老授权登录:

刚推出时:

  •  使用wx.loginwx.getUserInfor,用于登录授权获取登录信息.
  •  wx.login获取授权的openid的codesession_key.
  •  wx.getUserInfo 会弹出授权弹窗,经过授权后,会返回加密的用户数据,由后端session_key进行解密

此后不久:

  • 授权则需要使用微信提供的专门 button 组件进行触发(防止一进来时触发)

注意:老版本最大的特点经过一次授权后,可以随时静默的获取用户信息

新版本登录:  

  • 使用wx.login获取UnionID
  • 新增wx.getUserProfile接口,代替原来的wx.getUserInfo,新接口会主动弹出授权,但只能一次获取当前的昵称头像,而且仍然需要用户点击后调用

开发适配方案:

  在文档小程序中,原有的登录接口是二合一的,即前端先调用完 wx.login 和 wx.getUserInfo,得到 code 和加密的用户信息,然后一起调用后端接口,后端查询已有用户或创建新用户,并对用户头像昵称信息进行更新。

  思路:

  1. 前端调用 wx.login,得到 code,并调用后端登录接口,得到提前颁发的登录态;
  2. 前端调用现有的获取业务用户信息接口,判断业务是否已获得昵称头像,如果已有昵称头像,直接保存 1 中的登录态,登录完成;
  3. 如果还未获得昵称头像,则弹出授权,授权后调用后端上传昵称头像接口,将得到的昵称头像进行保存;
  4. 根据产品交互设计,在用户选择更新昵称头像时,重复 3 中的步骤,授权并更新昵称头像。

  转载自AlloyTeam:http://www.alloyteam.com/2021/04/15431/

原文地址:https://www.cnblogs.com/cqy1125/p/14849975.html