微信小程序新版本后用户昵称变成了“微信用户“解决方法

今天在做小程序的时候突然发现获取用户昵称和头像的时候出现了奇怪的bug(如下图)
微信小程序新版本后用户昵称变成了“微信用户“解决方法
检查了n遍代码后还是找不到问题,想着看看以前的代码是怎么写的,结果发现所有的都变成了这种情况,肯定是官方又更新了,经过一系列的查看文档修改后成功解决了问题,现在将解决过程记下来,一是做一个记录,二是希望能帮助到大家

解决过程
第一时间是查看是不是微信又更新了(之前就因为一个bug卡了好长时间,最后发现使用的是旧版本。。。)当更新到最新版本1.05.2103190后,在终端发现了

微信小程序新版本后用户昵称变成了“微信用户“解决方法
微信小程序提供了一个新的接口wx.getUserProfile获取用户信息

微信小程序新版本后用户昵称变成了“微信用户“解决方法
微信小程序新版本后用户昵称变成了“微信用户“解决方法

官方详情文档

重点:wx.getUserProfile不能在onShow或者onLoad里面调用,要在 catchtap或者button的bindtap调用

最终代码

js

Page({
  data: {
    userInfo: null,
    isUser: false
  },
  getUserProfile() {
    wx.getUserProfile({
      desc: '使用户得到更好的体验',
      success: (res) => {
        console.log("获取用户信息成功", res)
        let user = res.userInfo
        wx.setStorageSync('user', user)
        this.setData({
          isUser: true,
          userInfo: user
        })
      },
      fail: res => {
        console.log("获取用户信息失败", res)
      }
    })
  },
  onShow() {
    this.getUserProfile()
    var user = wx.getStorageSync('user')
    if (user && user.nickName) {
      this.setData({
        isUser: true,
        userInfo: user
      })
    }
  }
})

wxml

<view class="header" wx:if="{{isUser}}" bindtap="change">
  <image src="{{userInfo.avatarUrl}}"></image>
  <text>{{userInfo.nickName}}</text>
</view>
<view wx:if="{{!isUser}}">
  <button type="primary" bindtap="getUserProfile">登录</button>
</view>
上一篇:CocosCreator - Bezier曲线插件


下一篇:小程序登录授权提示框不能弹出