微信小程序-新的页面授权机制
背景:
为了防止在打开小程序就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序
打断用户正常使用小程序流程,同时不利于获取新用户
老授权登录:
刚推出时:
- 使用wx.login和wx.getUserInfor,用于登录和授权获取登录信息.
- wx.login获取授权的openid的code与session_key.
- wx.getUserInfo 会弹出授权弹窗,经过授权后,会返回加密的用户数据,由后端session_key进行解密
此后不久:
- 授权则需要使用微信提供的专门 button 组件进行触发(防止一进来时触发)
注意:老版本最大的特点经过一次授权后,可以随时静默的获取用户信息
新版本登录:
- 使用wx.login获取UnionID
- 新增wx.getUserProfile接口,代替原来的wx.getUserInfo,新接口会主动弹出授权,但只能一次获取当前的昵称头像,而且仍然需要用户点击后调用
开发适配方案:
在文档小程序中,原有的登录接口是二合一的,即前端先调用完 wx.login
和 wx.getUserInfo
,得到 code 和加密的用户信息,然后一起调用后端接口,后端查询已有用户或创建新用户,并对用户头像昵称信息进行更新。
思路:
- 前端调用
wx.login
,得到 code,并调用后端登录接口,得到提前颁发的登录态; - 前端调用现有的获取业务用户信息接口,判断业务是否已获得昵称头像,如果已有昵称头像,直接保存 1 中的登录态,登录完成;
- 如果还未获得昵称头像,则弹出授权,授权后调用后端上传昵称头像接口,将得到的昵称头像进行保存;
- 根据产品交互设计,在用户选择更新昵称头像时,重复 3 中的步骤,授权并更新昵称头像。
转载自AlloyTeam:http://www.alloyteam.com/2021/04/15431/