由于 PC/macOS 平台「头像昵称填写能力」存在兼容性问题,对于来自低于2.27.1版本的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将正常返回用户头像昵称。
调整背景
在小程序内,开发者可以通过 wx.login 接口直接获取用户的 openId 与 unionId 信息,实现微信身份登录,支持开发者在多个小程序或其它应用间匿名关联同一用户。
同时,为了满足部分小程序业务中需要创建用户的昵称与头像的诉求,平台提供了 wx.getUserProfile 接口,支持在用户授权的前提下,快速使用自己的微信昵称头像。
但实践中发现有部分小程序,在用户刚打开小程序时就要求收集用户的微信昵称头像,或者在支付前等不合理路径上要求授权。如果用户拒绝授权,则无法使用小程序或相关功能。在已经获取用户的 openId 与 unionId 信息情况下,用户的微信昵称与头像并不是用户使用小程序的必要条件。为减少此类不合理的强迫授权情况,作出如下调整。
wx.uploadFile上传头像不成功排查其他原因外请查看是否加header
我遇到的是没加header就是上传不成功
header里面的信息需要根据自己项目的情况配置
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
<image class="avatar" src="{{avatarUrl}}"></image>
</button>
<input type="nickname" class="weui-input" placeholder="请输入昵称"/>
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
function setHeaders(method) {
var openId = wx.getStorageSync('openId');
var sessionId = '';
if (openId) {
sessionId = wx.getStorageSync(openId + '_sessionId');
wx.setStorage({
key:"sessionId",
data:sessionId
})
}
if (method == 'post')
return {
'Accept': '/json',
'Content-type': 'application/x-www-form-urlencoded;charset=utf-8',
'Authorization': 'Bearer ' + wx.getStorageSync('token'),
'Cookie': 'JSESSIONID=' + sessionId,
'openId': openId
}
return {
'Accept': '/json',
'Authorization': 'Bearer ' + wx.getStorageSync('token'),
'Cookie': 'JSESSIONID=' + sessionId,
'openId': openId
}
}
Page({
data: {
avatarUrl: defaultAvatarUrl,
},
onChooseAvatar(e) {
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
}
wx.uploadFile({
url: ,
filePath: imageFile,
name: 'imageFile',
timeout: 60000,
formData: {
'imageFile': imageFile,
'nickName': nickName
},
header: setHeaders('post'),
success (res){}
})
})