1、正確寫法,但獲取不到
最近開發微信小程序,需要使用獲取用戶的頭像信息,使用getUserProfile 怎麼都獲取不到,
getInfo(){ wx.getUserProfile({ desc: '獲取用戶信息', force: true, success:(res)=>{ debugger this.setData({ //需要在data中定義一個userInfo空對象用來接收信息 userInfo:res.userInfo }) } , fail:(res)=>{ console.log('222',res) } }) },
這個 userInfo 中包含了用戶的頭像信息,但是是一個默認的灰色頭像。
後來發現原來是他規則改了
2、新的寫法是:
頭像暱稱填寫
從基礎庫 2.21.2 開始支持
當小程序需要讓用戶完善個人資料時,可以通過微信提供的頭像暱稱填寫能力快速完善。
根據相關法律法規,爲確保信息安全,由用戶上傳的圖片、暱稱等信息微信側將進行安全檢測,組件從基礎庫2.24.4版本起,已接入內容安全服務端接口(mediaCheckAsync、msgSecCheck),以減少內容安全風險對開發者的影響。
使用方法
頭像選擇
需要將 button 組件 open-type
的值設置爲 chooseAvatar
,當用戶選擇需要使用的頭像之後,可以通過 bindchooseavatar
事件回調獲取到頭像信息的臨時路徑。
從基礎庫2.24.4版本起,若用戶上傳的圖片未通過安全監測,不觸發bindchooseavatar
事件。
暱稱填寫
需要將 input 組件 type
的值設置爲 nickname
,當用戶在此input進行輸入時,鍵盤上方會展示微信暱稱。
從基礎庫2.24.4版本起,在onBlur
事件觸發時,微信將異步對用戶輸入的內容進行安全監測,若未通過安全監測,微信將清空用戶輸入的內容,建議開發者通過 form 中form-type
爲submit
的button 組件收集用戶輸入的內容。
在開發者工具上,input 組件是用 web 組件模擬的,因此部分情況下並不能很好的還原真機的表現,建議開發者在使用到原生組件時儘量在真機上進行調試。
代碼示例
<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' Page({ data: { avatarUrl: defaultAvatarUrl, }, onChooseAvatar(e) { const { avatarUrl } = e.detail this.setData({ avatarUrl, }) } })
附屬兩個鏈接:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html
https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01