微信小程序getUserProfile适配方案

  • A+
所属分类:Web前端
摘要

清明节放假前一天 群里突然炸锅,说小程序所有用的昵称全部变成了微信昵称

清明节放假前一天 群里突然炸锅,说小程序所有用的昵称全部变成了微信昵称

当时我就

微信小程序getUserProfile适配方案

特么不是说好13号吗???

吓得我赶紧爬起来翻文档(需要代码直接往后翻)

wx.getUserProfile(Object object)

基础库 2.10.4 开始支持,低版本需做兼容处理。

获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。

getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 即wx.getUserInfo接口的返回参数不变,但开发者获取的userInfo为匿名信息。

微信小程序getUserProfile适配方案

微信小程序getUserProfile适配方案

为优化用户的使用体验,平台将进行以下调整:
2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID
2021年4月13日后发布的小程序新版本,无法通过wx.getUserInfo与

原因就像微信所说的

很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。

这里我会给出Uni-app的适配代码,各位同学举一反三(4.13号之前发布的正式包暂不影响)

html

<button v-if="canUseGetUserProfile" hover-class="none" @tap="getUserProfile">微信登录</button> <button v-else hover-class="none" open-type="getUserInfo" @getuserinfo="setUserInfo">微信登录</button>  

data

canUseGetUserProfile: false 

js

onLoad() {     //判断是否存在getUserProfile方法     if (uni.getUserProfile) {       this.setData({         canUseGetUserProfile: true       })     } },  //小程序授权api替换 getUserInfo 替换  getUserProfile() {     // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认     // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗     uni.getUserProfile({       desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写       success: (res) => {         //业务逻辑       }     })   }, 

这里要注意

desc为必填项,并且将来有可能会将信息提示在弹窗内,所以要谨慎填写;
getUserProfileAPI不是通过open-type 吊起 而是使用 @tap="getUserProfile"bindtap="getUserProfile" 调用的

且必须为直接调用,不能通过其他函数回调调用

否则会报getUserProfile:fail can only be invoked by user TAP gesture.错误

如果你要问我看法

就像微信开发文档里的评论一样 人事不干一点 那么多bug不修

微信小程序getUserProfile适配方案

有用的话麻烦点个赞啦 3Q

源码地址