新版微信小程序获取昵称(微信小程序用户头像昵称获取新规适配教程)

为什么小程序getUserInfo获取的微信名称是"微信用户"?

在官方公告中:
2021年4月28日24时后发布的小程序新版本,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。

新增getUserProfile接口(基础库2.10.4版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

 

从2022年2月21日24时起回收通过<open-data>展示个人信息的能力,若小程序需收集用户昵称头像等信息,可以通过 头像昵称填写功能 功能进行收集。具体回收方式为:

  1. 头像展示 灰色头像
  2. 用户昵称展示“微信用户”
  3. 用户性别、地区、语言展示为为空(“”)

解决办法:

以uniapp为例(小程序一样),代码如下:

注意:uniapp-小程序开发,不弹授权框问题,微信开发者工具版本问题,在详情里改成2.21.4就可以

getUserInfo(e) {
    var _this = this
    uni.showModal({
      title: '温馨提示',
      content: '亲,授权微信登录后才能正常使用小程序功能',
      success(res) {
        //如果用户点击了确定按钮
        if (res.confirm) {
          wx.getUserProfile({
            desc: '获取你的昵称、头像、地区及性别',
			lang: 'zh_CN',
            success: res => {
			console.log("nickName:"+res.userInfo.nickName);
			console.log("avatarUrl:"+res.userInfo.avatarUrl);
              _this.setData({
                userInfo: res.userInfo,
                hasUserInfo: true
              })

            },
            fail: res => {
              console.log(res)
              //拒绝授权
              uni.showToast({
                title: '您拒绝了请求,不能正常使用小程序',
                icon: 'error',
                duration: 2000
              });
              return;
            }
          });
        } else if (res.cancel) {
          //如果用户点击了取消按钮
          uni.showToast({
            title: '您拒绝了请求,不能正常使用小程序',
            icon: 'error',
            duration: 2000
          });
          return;
        }
      }
    })
	},

前端:

<view class="container">
  <view class="userinfo">
    <block wx:if="{{!hasUserInfo}}">
      <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
      <button wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
    </block>
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
  </view>
</view>

 

 

 

1、所有文章未经授权禁止转载、摘编、复制或建立镜像,如有违反,追究法律责任。
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com
THE END
分享
二维码
< <上一篇
下一篇>>