正式会员专享

微信小程序更新接口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 部分

隐藏内容 VIP会员登录可见
以下会员组可阅读此处隐藏内容
正式会员 [非卖]小伙伴

请先登录并开通会员

方案二:分开执行获取资料和登录态

大概流程如下

第一步:静默登录


1、用户进入小程序时,通过 wx.login 静默获取临时 code,交由后端换取 openid/unionid

2、将 openid 与数据库匹配,如无则插入用户表,返回userid;如有则更新一波用户资料,返回userid

这个过程是静默的,不需要用户参与。

代码思路参考

隐藏内容 VIP会员登录可见
以下会员组可阅读此处隐藏内容
正式会员 [非卖]小伙伴

请先登录并开通会员

第二步:用户信息获取

对于需要用户头像信息的时候,在使用 wx.getUserProfile 能力即可,大概流程


1、通过 openid 与数据库匹配,如存在则表示已授权过,当头像字段不为空,则直接返回头像等资料到前端

2、如果不存在或者头像为空,则调起 wx.getUserProfile 拉取用户基本资料(每次获取均弹窗且需要用户确认授权),同时更新入库即可

3、自定义登录态

代码思路参考:

可以在 app.js 之类的地方写一个通用函数,用于调用用户授权,授权后将头像昵称等信息写入数据表,同时在本地缓存设置标记用户授权成功。

隐藏内容 VIP会员登录可见
以下会员组可阅读此处隐藏内容
正式会员 [非卖]小伙伴

请先登录并开通会员

注意:静默登录和获取资料,这两个过程是独立的,也可以在 wx.getUserProfile 内调用 wx.login,反过来包含是微信不允许的。

大概就是这么个流程,再就是根据项目具体的需求做处理了。

wx.getUserProfile 相关参考文档

微信小程序更新接口wx.getUserProfile涉及小程序登录/用户信息相关接口调整说明

微信小程序登录、用户信息相关接口调整更新说明

微信小程序更新接口wx.getUserProfile相关解读

微信小程序更新接口wx.getUserProfile后获取用户昵称变成[微信用户]的解决方法

微信小程序更新接口wx.getUserProfile后不返回scope.userInfo权限

微信小程序更新接口wx.getUserProfile后获取用户资料及授权登陆判断的方案

人人商城小程序整体修改基于新接口wx.getUserProfile获取用户资料及授权登陆判断

人人商城小程序用户授权登录及数据获取流程分析