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

当时我就

1 (14).jpg

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

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

wx.getUserProfile(Object object)

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

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

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

image.png

image.png

为优化用户的使用体验,平台将进行以下调整:
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不修

image.png

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

源码地址

内容来源于网络如有侵权请私信删除