![小程序調(diào)整](/upload/editor/img/1669110119.png)
相信大家都收到這個通知了,關于微信小程序獲取用戶頭像和昵稱這個問題,可謂變化頻繁,可真苦了開發(fā)者,每次重新提交代碼,都需要重新適配。
最開始是使用wx.getUserInfo ,后面改為wx.getUserProfile,現(xiàn)在又變了。
調(diào)整說明
自 2022 年 10 月 25 日 24 時后(以下統(tǒng)稱 “生效期” ),用戶頭像昵稱獲取規(guī)則將進行如下調(diào)整:
自生效期起,小程序 wx.getUserProfile 接口將被收回:生效期后發(fā)布的小程序新版本,通過 wx.getUserProfile 接口獲取用戶頭像將統(tǒng)一返回默認灰色頭像,昵稱將統(tǒng)一返回 “微信用戶”。生效期前發(fā)布的小程序版本不受影響,但如果要進行版本更新則需要進行適配。
自生效期起,插件通過 wx.getUserInfo 接口獲取用戶昵稱頭像將被收回:生效期后發(fā)布的插件新版本,通過 wx.getUserInfo 接口獲取用戶頭像將統(tǒng)一返回默認灰色頭像,昵稱將統(tǒng)一返回 “微信用戶”。生效期前發(fā)布的插件版本不受影響,但如果要進行版本更新則需要進行適配。通過 wx.login 與 wx.getUserInfo 接口獲取 openId、unionId 能力不受影響。
「頭像昵稱填寫能力」支持獲取用戶頭像昵稱:如業(yè)務需獲取用戶頭像昵稱,可以使用「頭像昵稱填寫能力」(基礎庫 2.21.2 版本開始支持,覆蓋iOS與安卓微信 8.0.16 以上版本),具體實踐可見下方《最佳實踐》。
小程序 wx.getUserProfile 與插件 wx.getUserInfo 接口兼容基礎庫 2.27.1 以下版本的頭像昵稱獲取需求:對于來自低版本的基礎庫與微信客戶端的訪問,小程序通過 wx.getUserProfile 接口將正常返回用戶頭像昵稱,插件通過 wx.getUserInfo 接口將正常返回用戶頭像昵稱,開發(fā)者可繼續(xù)使用以上能力做向下兼容。
對于上述 3,wx.getUserProfile 接口、wx.getUserInfo 接口、頭像昵稱填寫能力的基礎庫版本支持能力詳細對比見下表:
![小程序表](/upload/editor/img/1669110433.png)
從上表可看出 沒有一個是全部通用的,那怎么辦呢?只能寫3種代碼進行適配了。代碼如下
const version = wx.getSystemInfoSync().SDKVersion if (compareVersion(version, '2.21.1') >= 0) { //使用獲取昵稱頭像接口 } else { //使用wx.getUserProfile接口 } 因為wx.getUserInfo 是非常老的接口,基本不用適配,正常用戶都升級了。 獲取頭像代碼
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"> <image class="avatar" src="{{avatarUrl}}"></image> </button>
onChooseAvatar(e) {
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
}
獲取昵稱代碼
<input type="nickname" class="weui-input" placeholder="請輸入昵稱"/>
input type為nickname即可 還是挺方便的
獲取昵稱有個坑是,他獲取的只是微信文件等,要讓別人看到,還是需要上傳到服務器,所以需要多一步。