微信小程序更新接口wx.getUserProfile后获取用户资料及授权登陆判断的方案
微信更新了接口 wx.getUserProfile 后,小程序授权登陆流程保持不变,但获取用户资料的方式改变了,原 wx.getUserInfo 只能返回匿名数据,现在需要使用 wx.getUserProfile 来获取了,但是每次都需要用户确认授权。
从4月13号开始,小程序获取用户资料和授权登录的方案,可以参考如下几个。
方案一:同步执行获取资料和登录态
大概流程
1、调起 wx.getUserProfile 获取用户基本资料
2、通过 wx.login 获取临时 code,将 code 交由后端换取 openid/unionid
3、将 openid 与数据库匹配,如无则插入用户表,返回userid;如有则更新一波用户资料,返回userid
4、自定义登录态
wxml 部分
<button bindtap="wxlogin">登陆</button>
JS 部分
方案二:分开执行获取资料和登录态
大概流程如下
第一步:静默登录
1、用户进入小程序时,通过 wx.login 静默获取临时 code,交由后端换取 openid/unionid
2、将 openid 与数据库匹配,如无则插入用户表,返回userid;如有则更新一波用户资料,返回userid
这个过程是静默的,不需要用户参与。
代码思路参考
第二步:用户信息获取
对于需要用户头像信息的时候,在使用 wx.getUserProfile 能力即可,大概流程
1、通过 openid 与数据库匹配,如存在则表示已授权过,当头像字段不为空,则直接返回头像等资料到前端
2、如果不存在或者头像为空,则调起 wx.getUserProfile 拉取用户基本资料(每次获取均弹窗且需要用户确认授权),同时更新入库即可
3、自定义登录态
代码思路参考:
可以在 app.js 之类的地方写一个通用函数,用于调用用户授权,授权后将头像昵称等信息写入数据表,同时在本地缓存设置标记用户授权成功。
注意:静默登录和获取资料,这两个过程是独立的,也可以在 wx.getUserProfile 内调用 wx.login,反过来包含是微信不允许的。
大概就是这么个流程,再就是根据项目具体的需求做处理了。
wx.getUserProfile 相关参考文档
微信小程序更新接口wx.getUserProfile涉及小程序登录/用户信息相关接口调整说明
微信小程序更新接口wx.getUserProfile相关解读
微信小程序更新接口wx.getUserProfile后获取用户昵称变成[微信用户]的解决方法
微信小程序更新接口wx.getUserProfile后不返回scope.userInfo权限
微信小程序更新接口wx.getUserProfile后获取用户资料及授权登陆判断的方案