问题说明:
问题:RuleApp在微信内无法获取用户头像,且用户无法设置
产生原因:微信修改用户信息获取规则
修复方法:
- 新增微信环境设置头像按钮
<!-- #ifdef MP-WEIXIN -->
<button class="cu-btn bg-gradual-blue radius" open-type="chooseAvatar" @chooseavatar="avatarUpload"></button>
<!-- #endif -->
- 修改
avatarUpload
函数,并新增uploadAvatarToSever
函数
uploadAvatarToSever(path) {
const uploadTask = uni.uploadFile({
url: that.$API.upload(),
filePath: path,
// header: {
// "Content-Type": "multipart/form-data",
// },
name: 'file',
formData: {
'token': token
},
success: function(uploadFileRes) {
setTimeout(function() {
uni.hideLoading();
}, 1000);
var data = JSON.parse(uploadFileRes.data);
//var data = uploadFileRes.data;
if (data.code == 1) {
// uni.showToast({
// title: data.msg,
// icon: 'none'
// })
that.avatar = data.data.url;
that.avatarNew = data.data.url;
localStorage.removeItem('toAvatar');
that.userEdit();
//console.log(that.avatar)
} else {
uni.showToast({
title: "头像上传失败,请检查接口",
icon: 'none'
})
}
},
fail: function() {
setTimeout(function() {
uni.hideLoading();
}, 1000);
}
})
},
avatarUpload(data) {
var that = this;
var token = "";
if (localStorage.getItem('userinfo')) {
var userInfo = JSON.parse(localStorage.getItem('userinfo'));
token = userInfo.token;
token = userInfo.token;
}
// #ifdef APP-PLUS || H5
base64ToPath(data)
.then(path => {
that.uploadAvatarToSever(path)
})
.catch(error => {
console.error("失败" + error)
})
// #endif
// #ifdef MP-WEIXIN
const path = data.detail.avatarUrl
that.uploadAvatarToSever(path)
// #endif
},
修复结果:
修复后,在微信内编辑用户信息页面会有设置头像
按钮,点击按钮会调用微信官方获取头像接口,选择微信头像或者设置其他头像接口,返回用户选择的头像临时路径,使用data.detail.avatarUrl
获取临时路径,调用uploadAvatarToSever
函数上传到服务器。