关于微信小程序获取用户头像和用户昵称接口变动的记录

微信官方宣布将收回wx.getUserProfile和wx.getUserInfo接口,推荐使用新的头像昵称填写能力。用户需通过chooseAvatar获取头像,并将可能无后缀的临时文件上传至服务器。同时,获取昵称时要注意在某些环境下v-model的实时更新问题。开发者需要注意处理这些变化以确保应用兼容性。
摘要由CSDN通过智能技术生成

微信官方公告:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01

wx.getUserProfile 接口将被收回

wx.getUserInfo 接口获取用户昵称头像将被收回

「头像昵称填写能力」支持获取用户头像昵称

解决办法:使用官方推荐的头像昵称填写能力

获取头像方法:

<view>头像</view>
 <button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
   <image class="avatar" :src="userAvatarUrl"></image>
</button>
onChooseAvatar(e) {
      console.log("用户选择的头像", e.detail);
      const { avatarUrl } = e.detail  //avatarUrl:临时文件
}

获取头像,当用户点击微信头像按钮

会从avatarUrl中获取到临时文件,这个临时文件是有jepg的后缀的,但是如果从相册获取的图片,那么是没有后缀的。无论是以上拿两种情况都需要保存到自己的开发服务器,因为临时文件,随时都会失效。特别注意的是如果是没有后缀的临时文件,传到后端,需要让后端去做判断,如果没后缀就手动添加上。希望大家注意这个坑。

上传文件在只能用不能用uni.request因为data参数不支持fromData格式

onChooseAvatar(e) {
                console.log("用户选择的头像", e.detail);
                const { avatarUrl } = e.detail
                this.userAvatarUrl = avatarUrl
                let token = uni.getStorageSync('token')
                uni.uploadFile({
                    url: `${config.baseUrl}/user/message/avatar`,
                    filePath: avatarUrl,
                    // formData:{type:3},
                    name: "file",//这个name很关键,后端就是从这里取二进制文件
                    header: {
                        Authorization: token,
                    },
                    success: (res) => {
                        let res1 = JSON.parse(res.data) //必须转,res是字符串
                        if (res1.state === 1) {
                            this.userAvatarUrl = res1.content
                            this.updataInfo() //更新用户信息
                        }
                    },
                    fail: (error) => {
                        console.log("头像出错", error);
                        uni.$u.toast('头像上传出错')
                    }
                })
            },

获取昵称方法:

<view>昵称</view>
 <input type="nickname" class="ipt" v-model="nickname" placeholder="请输入昵称"  />

这里注意有个坑,在用编译器开发的时候如果选择了微信昵称那么v-model不会实时更新,控制台打印出来的是之前的值。但是真机测试就是好着的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柑橘乌云_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值